TypeScript:如何获取子类的方法来返回父类

时间:2016-09-25 03:23:30

标签: class typescript method-chaining

我正在试图弄清楚如何让它正常工作:

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>的类型不匹配。

1 个答案:

答案 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