2017-09-11 234 views
1

我有一個方法是採取簽名中的對象的參數。我想傳遞該對象而不是許多參數,另一方面,我不想更改現有方法的簽名,因爲它已在多個位置使用。所以基本上我想要兩種方法。但是當我試圖編寫代碼時,它給了我錯誤Duplicate function implementation如何在TypeScript中重載方法?

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> { 

FYI 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能夠重載函數,但與其他OOP語言(如C++)相比,它具有一些特殊性。展望AR的ref,儘管事實上,你的方法有不同數量的參數,我可以這樣做避免了編譯器errros:

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); 
    } 
} 

我曾經dataParent?: string,其中?:運營商指定的參數命名dataParent類型string可選