打字稿中有什么方法可以强制执行未实例化类的类型吗?
下面我想强制要求只有扩展Repository
的类才能传递给 addRepository
方法,但我不想在传入时实例化该类(它的构造函数应该只由服务容器调用(。
有什么办法可以做到这一点吗?
import { Repository } from '../repositories/repository';
class Factory {
addRepository(repositoryClass: Repository) /* <- seriously what can go here? */ { }
}
class UserRepository extends Repository {
}
let factory = new Factory();
factory.addRepository(UserRepository); // throws error
您可以使用
typeof
运算符:
class Factory {
addRepository(repositoryClass: typeof Repository) { }
}