2017-09-11 2 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> { 

은 참고 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 아칸소와 방법은 인수의 다른 번호를 가지고 있다는 사실에도 불구하고 보면,이 작업을 수행하여 컴파일러 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 유형은 (선택 사항)입니다.

관련 문제