Javascript TypeScript声明方法返回类型是类或子类的实例类型

Javascript TypeScript声明方法返回类型是类或子类的实例类型,javascript,typescript,oop,Javascript,Typescript,Oop,typescript中是否有方法声明返回当前实例类型的方法 例如: class AnimalBuilder { withColor:(color: Color): AnimalBuilder { this.color = color; return this; } } class DogBuilder extends AnimalBuilder { //builder methods specific to a dog.

typescript中是否有方法声明返回当前实例类型的方法

例如:

class AnimalBuilder {

    withColor:(color: Color): AnimalBuilder    { 
       this.color = color; 
       return this; 
    } 

}

class DogBuilder extends AnimalBuilder { 
    //builder methods specific to a dog. 
}
。这样的呼唤

new DogBuilder().withColor()
返回类型为
DogBuilder
而不是
AnimalBuilder
。在objective-c中,这样的东西称为
instancetype
。我在TypeScript中签出了
InstanceType
,但无法确定它是否在谈论同一件事

这将允许以任何顺序在超类和子类上链接生成器方法,例如:

new DogBuilder().withColor(Color.BLUE).withBreed(breed).withEtc()

。无需在子类上添加任何额外的cruft来支持这一点

您可以在基类中省略return参数,或者如果您想在方法上显示return类型,您可以返回
this

请看

class AnimalBuilder {
    color?: Color;
    withColor(color: Color): this { 
       this.color = color; 
       return this; 
    } 
}