我开始认为这是不可能的。我有一个通用的抽象基类,我希望跟踪T
的类型。我发现实现这个目的的唯一方法是在我的基类上有一个参数,并在超级构造函数中重新声明泛型类型。
abstract class Base<T> {
genericType: any;
constructor(genType: any) {
this.genericType = genType;
}
}
class Concrete extends Base<String> {
constructor() {
super(String);
}
}
let obj = new Concrete();
document.write(obj.genericType);
我希望做的只是在我的基类中有这样的东西。
genericType: any = T;
答案 0 :(得分:1)
当你调用super(String)
时,你实际上传递了String类的构造函数。
您可以通过以下方式重写基类:
abstract class Base<T> {
genericTypeConstructor: {new(): T};
constructor(genType: {new(): T}) {
this.genericTypeConstructor = genType;
}
}