我正在试图弄清楚如何让它正常工作:
class A {
john(): B {
return this; // <-- ERROR HERE
}
}
class B extends A {
joe(): B {
return this;
}
}
所以我可以做方法链接:
let instance = new B();
instance.john().joe();
当然,TypeScript抱怨this
与B&#39>的类型不匹配。
答案 0 :(得分:7)
只需使用this
关键字作为返回this
的方法的返回类型:
class A {
john(): this {
return this;
}
}
class B extends A {
joe(): this {
return this;
}
}
let instance = new B();
instance.john().joe();
您也可以省略返回类型。 TypeScript会将返回类型推断为this
,因为这些方法会返回this
:
class A {
john() {
return this;
}
}
class B extends A {
joe() {
return this;
}
}
此功能在TypeScript 1.7中称为Polymorphic this
types并且为introduced。有关详细信息,请参阅GitHub PR。