有没有办法强制执行未实例化的类的类型?

时间:2017-05-15 14:58:31

标签: typescript

在打字稿中有没有办法强制执行未实例化的类的类型?

下面我想强制说只有扩展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

1 个答案:

答案 0 :(得分:2)

您可以使用typeof运算符:

class Factory {
  addRepository(repositoryClass: typeof Repository) { }
}