如何捕获摘要类泛型类型?

时间:2017-02-08 13:23:25

标签: typescript typescript2.0

我开始认为这是不可能的。我有一个通用的抽象基类,我希望跟踪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;

1 个答案:

答案 0 :(得分:1)

当你调用super(String)时,你实际上传递了String类的构造函数。

您可以通过以下方式重写基类:

abstract class Base<T> {
    genericTypeConstructor: {new(): T};

    constructor(genType: {new(): T}) {
        this.genericTypeConstructor = genType;
    }
}