免责声明:我觉得很难总结问题的标题,所以如果你有更好的建议,请让我知道在评论中。
让我们使用以下简化的typescript类:
class Model {
save():Model {
// save the current instance and return it
}
}
Model
类有一个返回自身实例的save()
方法:aModel
。我们可以像这样扩展
Model
:class SomeModel extends Model {
// inherits the save() method
}
因此,
SomeModel
将继承save()
,但它仍然返回一个Model
,而不是一个SomeModel
。有没有一种方法,也许是使用泛型,将
save()
中SomeModel
的返回类型设置为SomeModel
,而不必在继承类中重新定义它? 最佳答案
你运气真好。Polymorphic this刚从TypeScript 1.7里出来。升级到typescript 1.7,然后删除显式返回类型,它将正常工作:
class Model {
save() {
return this;
}
}
class SomeModel extends Model {
otherMethod() {
}
}
let someModel = new SomeModel().save();
// no compile error since someModel is typed as SomeModel in TS 1.7+
someModel.otherMethod();