我有几个类,我想创建函数,它接受类(定义,而不是实例)。
class Page1 {
}
class Page2 {
}
register(Page1);
register(Page2);
function Register(pageType){..}
如何宣布pageType参数,以便register(new Page1());
失败?
void Register(Type pageType){..}
答案 0 :(得分:1)
我已经在an IoC container for TypeScript工作了一段时间,我发现这样做的最好方法是使用泛型:
class Page1 {
}
class Page2 {
}
interface Newable<T> {
new(...args: any[]): T;
}
function register<T>(pageType: Newable<T>){}
register<Page1>(Page1); // OK
register<Page2>(Page2); // OK
register<Page1>(new Page1()); // Error
register<Page2>(new Page2()); // Error
答案 1 :(得分:0)
你可以声明一个接口'Type'扩展Function并在你的register方法中使用它
interface Type extends Function { }
function Register(pageType : Type ){..}
然后按照你的意愿使用它,
class Page1 {
}
class Page2 {
}
register(Page1);
register(Page2);