如何捕获抽象 class 泛型?

How can I capture an abstracts class generic type?

我开始认为这是不可能的。我有一个通用的抽象基 class,我希望跟踪 T 的类型。我发现实现这一点的唯一方法是在我的基础上有一个参数 class 并在超级构造函数中重新声明通用类型。

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);

我希望做的只是在我的基础上有一些类似的东西 class。

genericType: any = T;

当您调用 super(String) 时,您实际上传递了 String class.

的构造函数

你可以这样重写你的基础class:

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

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