0

私は、私は」blogで見つかった内容に基づいて、今 オーバーロード関数は、連合型を使用して活字体のパラメータの数と種類が異なる

getData(): MyModel 
getData<T>(type:string):T 

の下のような2つのオーバーロードを持つ関数をオーバーロードしようとしています上記の関数が取ることができるパラメータのタイプを提供するために union typesを使用しようとしています。

ケース1:(ここでは問題なし)

関数はパラメータを持っているし、彼らは

getData(type:number): MyModel 
getData<T>(type:string):T 
getData<T>(type: number|string): MyModel:T { 
//implementation 
} 

ケース2以下のような種類が異なるだけで:(問題:連合のタイプを使用する方法この場合)

関数のパラメータが次のように数と型が異なる場合

getData(): MyModel 
getData<T>(type:string):T 

質問Union typesは(活字体を使用して)、これらの関数をオーバーロードする方法よりも使用することができない場合はCase 2

  • Union typesを使用する方法

  • 答えて

    0

    あなたはパラメータを設定する必要がありますオプションとして戻り値の型としてユニオンタイプを使用します。

    class MyClass { 
        getData(): MyModel; 
        getData<T>(type: string): T; 
        getData<T>(type?: string): MyModel | T { 
         // implementation 
        } 
    } 
    

    code in playground

    +0

    しかし、それはブログに記載されているようintellisenceに分けて2つのオーバーロードを示していないその(https://blog.mariusschulz.com/2016/08/18/function-overloads-in -typescript) –

    +0

    それは遊び場にあります。あなたのIDEの何かでなければなりません。 –

    関連する問題