通用类的工厂方法

时间:2019-08-15 19:36:22

标签: typescript

我正在尝试在类中使用正确的返回值键入工厂方法。我在f2中找到了很多有关如何获取正确类型的问题,但就我而言,我使用泛型,而无法获取正确的默认类型B<string>

如何在f3中获得类似信息?

class A<T> {
  static f1() {
    return new this()
  }

  static f2<Q>(this: { new (): Q }): Q {
    return new this()
  }
}

class B<K = string> extends A<K> {
  //
}

let x = new B()
let y = B.f1() // y: A<unknown>
let z = B.f2() // z: B<unknown>

let want = B.f3() // want: B<string>

0 个答案:

没有答案