2017-09-11 3 views
1

私は署名の中でオブジェクトのパラメータを取っているメソッドを持っています。私は多くのパラメータの代わりにオブジェクトを渡したいのですが、既存のメソッドのシグネチャを複数の場所で既に使用しているため、変更したくありません。基本的に私は両方の方法が欲しいです。しかし、コードを書こうとすると、エラーDuplicate function implementationが返されます。TypeScriptでメソッドをオーバーロードする方法は?

FYI
getSearchData(fetchData: FetchData,languageCode: string, sorting: string, maxResultCount: number, skipCount: number): Observable<PagedResultDtoOfFetchData> { 

    getSearchData(dataLevel: number, codeType: number, dataCode: string, descLong: string, languageCode: string, dataParent: string, sorting: string, maxResultCount: number, skipCount: number): Observable<PagedResultDtoOfFetchData> { 

dataLevel, codeType, dataCode, descLong, dataParentfetchDataのプロパティです。

+1

ドキュメント - https://www.typescriptlang.org/docs/handbook/functions.html#overloads [活字体関数の多重定義]の –

+2

可能な重複(https://stackoverflow.com/questions/13212625/typescript-function -overloading) – marvinhagemeister

+0

@gsamarasなぜあなたはとても欲張りですか? –

答えて

1

Typescriptは関数をオーバーロードすることができますが、C++などの他のOOP言語とは対照的にいくつかの特殊性があります。 ref ARとあなたの方法は、引数の数が異なるという事実にもかかわらず見て、私はこれを行うことによって、コンパイラerrrosを避けることができます:私は?:オペレータはパラメータがdataParentを命名することを指定しdataParent?: stringを、使用

class FunOverloadClass { 
    getSearchData(dataLevel: number, codeType: number, dataCode: string, descLong: string, languageCode: string, dataParent: string, sorting: string, maxResultCount: number, skipCount: number): Observable<PagedResultDtoOfFetchData>; 
    getSearchData(fetchData: FetchData, languageCode: string, sorting: string, maxResultCount: number, skipCount: number): Observable<PagedResultDtoOfFetchData>; 

    getSearchData(stringOrNumberParameter: any, secondParam: any, thirdParam: any, fourthParam: any, fifthParam: any, dataParent?: string, sorting?: string, maxResultCount?: number, skipCount?: number): string { 
     if (stringOrNumberParameter && typeof stringOrNumberParameter == "number") 
      alert("Variant #1: numberParameter = " + stringOrNumberParameter); 
     else 
      alert("Variant #1: stringParameter = " + stringOrNumberParameter); 
    } 
} 

stringのタイプはです(オプション)です。

関連する問題