typescript返回继承类的类型

ziv*_*ziv 10 typescript typescript-typings

这就是我想要做的:

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
Run Code Online (Sandbox Code Playgroud)

d2的clone方法的返回类型应该是Derived类型的返回类型?

Avi*_*dad 12

我真的希望有更好的方法,但这是我目前做的事情:

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();
Run Code Online (Sandbox Code Playgroud)

d2是类型的Derived,并且d3是类型的DerivedAgain,如所预期.