我正在尝试在类中使用正确的返回值键入工厂方法。我在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>