2016-09-25 3 views
3

私はこれが正しく動作するために取得する方法を把握しようとしています:活字体:親を返すために、サブクラスのメソッドを取得する方法この

let instance = new B(); 
instance.john().joe(); 

class A { 
    john(): B { 
     return this; // <-- ERROR HERE 
    } 
} 

class B extends A { 
    joe(): B { 
     return this; 
    } 
} 

は、だから私は、メソッドチェーンを行うことができますもちろん、TypeScriptはthisがBの型と一致しないと訴えています。

+0

BもAであるため、「parent this」は必要ありません。 – AlexG

答えて

7

単にthisを返すメソッドの戻り値の型としてthisキーワードを使用します。

class A { 
    john(): this { 
     return this; 
    } 
} 

class B extends A { 
    joe(): this { 
     return this; 
    } 
} 

let instance = new B(); 
instance.john().joe(); 

ます。また、戻り値の型を省略することができます。方法はthisを返すので、活字体はthisとして戻り値の型を推論します:

class A { 
    john() { 
     return this; 
    } 
} 

class B extends A { 
    joe() { 
     return this; 
    } 
} 

この機能はPolymorphic this typesと呼ばれ、活字体1.7にintroducedだっれます。詳細については、GitHub PRを参照してください。

関連する問題