打字稿中是否有办法声明返回当前实例类型的方法?
例如:
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<T>
,但不知道它是否在谈论同一件事。
这将允许以任何顺序在超类和子类上链接构建器方法,例如:
new DogBuilder().withColor(Color.BLUE).withBreed(breed).withEtc()
。 。不必在子类上添加任何多余的东西来支持这一点。
答案 0 :(得分:3)
您可以只在基类中省略return参数,或者如果您想在方法上显示返回类型(可以更简洁),则可以返回this
。
class AnimalBuilder {
color?: Color;
withColor(color: Color): this {
this.color = color;
return this;
}
}
请参阅playground。