由于TypeScript对泛型使用类型擦除,所以我正在研究一种在运行时收集类型信息的替代解决方案。
我提出的解决方案与使用Class<T>的Java中的解决方案类似。
它能工作,但它不feel...complete
type Class<T> = { prototype: T }
function passMeAClass<T>(cls: Class<T>): void {
console.log(cls);
}
passMeAClass(String)type Class<T> = { prototype: T }足够完整了吗?发布于 2018-03-01 15:19:12
实现这一点的方法通常是使用构造函数签名(类似于函数签名,但前面是new ):
type Constructor<T> = new (... args: any[]) => T;
function passMeAClass<T>(cls: Constructor<T>): void {
console.log(cls);
}
passMeAClass(String)这样也可以在函数中添加新的up对象。(例如,new cls()可以工作)。
另外,对于混合场景,您可以使用cls作为基本类型(您的版本无法工作):
function extendTheClass<T extends Constructor<{}>>(cls: T) {
return class X extends cls {
};
}https://stackoverflow.com/questions/49052832
复制相似问题