menu

TypeScript의 함수 오버로딩

때로는 반환 값의 타입이 전달된 매개변수에 따라 달라지는 함수를 만나게 됩니다. 이를 위해 TypeScript에서는 함수의 오버로딩을 사용합니다. 이는 함수의 다양한 시그니처 변형을 지정할 수 있게 해줍니다.

예제를 통해 살펴보겠습니다. 문자열의 문자들을 글자 배열로 분리하는 함수가 있다고 가정해 봅시다:

function splitStr(str: string): string[] { return str.split(''); }

또한, 숫자의 자릿수를 숫자 배열로 분리하는 함수도 있다고 가정합니다:

function splitNum(num: number): number[] { let str: string = String(num); let arr: string[] = str.split(''); return arr.map(elem => +elem); }

이제 두 함수를 하나로 합쳐보겠습니다. 새로운 함수는 매개변수의 타입에 따라 숫자 배열이나 문자열 배열을 반환해야 합니다.

함수의 다양한 시그니처를 선언하기 위해 오버로딩을 사용합니다:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { // 두 시그니처의 구현 }

이제 함수의 구현을 작성해 보겠습니다. 코드 내에서 어떤 함수 시그니처가 활성화되었는지 조건문으로 확인하고, 그에 따라 적절한 코드를 실행하여 해당 타입의 결과를 반환해야 합니다:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { if (typeof val === 'string') { return val.split(''); } else { let str: string = String(val); let arr: string[] = str.split(''); return arr.map((elem: string): number => +elem); } }

다른 언어와 달리, TypeScript에서는 오버로딩 시 하나의 함수가 생성됩니다. 동일한 이름이지만 서로 다른 시그니처를 가진 여러 함수를 만드는 것은 불가능합니다.

DOM 요소의 텍스트를 반환하거나 변경하는 함수를 작성하세요. 이 함수는 다음과 같이 동작해야 합니다:

text('#elem', 'text'); // 텍스트를 설정함 text('#elem'); // 현재 텍스트를 반환함
한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부