这就是我想要做的:
class Base{
clone(){
//return new instance of the inherited class
}
}
class Derived extends Base{
}
const d1=new Derived();
const d2=d2.clone; // I want d2 to be of type Derived
d2 的克隆方法的返回类型应该是 Derived 类型?
最佳答案
我真的希望有更好的方法,但这是我目前所做的:
class Base{
clone(): this {
return new (this.constructor as any)();
}
}
class Derived extends Base {
}
class DerivedAgain extends Derived {
}
const d1=new Derived();
const d2 = d1.clone();
const d3 = new DerivedAgain().clone();
d2
是Derived
类型,而d3
是DerivedAgain
类型,正如预期的那样。
关于继承类的 typescript 返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42344459/