2016-07-20 5 views
3

TypeScriptでこのような関数のオーバーロードを実現する最も簡単な方法は何ですか?Typescript:関数のオーバーロード

function Foo(
    param1: number, 
    param2: string, 
    param3: string, 
    param4:() => void, 
    param5: (xyz: string) => void): void { .... } 

function Foo(
    param6: number, 
    param3: string, 
    param4:() => void, 
    param5: (xyz: string) => void): void { .... } 

答えて

3

それはOverloads section of the Functions docsでカバーされていますが、あなたの場合には、それはこのようなことができます:

function Foo(
    param1: number, 
    param2: string, 
    param3: string, 
    param4:() => void, 
    param5: (xyz: string) => void): void; 
function Foo(
    param6: number, 
    param3: string, 
    param4:() => void, 
    param5: (xyz: string) => void): void; 

function Foo(...args: any[]): void { 
    if (args.length === 5) { 
     // 1st signature 
    } else if (args.length === 4) { 
     // 2nd signature 
    } else { 
     // error: unknown signature 
    } 
} 

code in playground

関連する問題