在打字稿中有没有办法强制执行未实例化的类的类型?
下面我想强制说只有扩展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
答案 0 :(得分:2)
您可以使用typeof
运算符:
class Factory {
addRepository(repositoryClass: typeof Repository) { }
}