반응형

함수 오버로드(function overload) 란?

함수 오버로드는 함수의 이름은 같지만 유형이 다른 여러 함수를 생성하는 것을 의미합니다. 타입스크립트에서 말고 다른 많은 프로그램에 존재하는 기능입니다. 다른 언어에서도 개념은 타입스크립트와 동일합니다. 하지만 타입스크립트는 결국 타입이 없는 자바스크립트로 컴파일되기 때문에 구현하는 방식이 약간 다릅니다.

타입은 자바스크립트 컴파일시에 제거 됩니다. 따라서 동일한 이름을 가진 여러 자바스크립트 함수를 사용하면 문제가 발생합니다. 따라서 타입스크립트에서 함수를 오버로드하기 위해 여러 함수를 정의하지만 구현은 하나만 합니다.

 

함수 오버로드 구현하기

아래 예에서 getFrute라는 함수를 오버로드 하겠습니다.

오버로드 시그니처

이 함수의 첫 번째 버전은 단일 문자열을 매개변수로 받고 문자열 배열을 반환합니다. 두 번째 버전은 부울 매개변수를 받고 문자열 배열을 반환합니다. 이를 오버로드 시그니처 라고 합니다. 이를 통해 타입스크립트에게 매개변수 유형이 다른 두가지 버전의 getFrute함수를 가지고 싶다고 선언해 주었습니다. 이제 구현 함수를 제공해 줘야 합니다.

함수 구현은 하나만

실제 함수의 구현은 하나지만 문자열 및 부울 매개변수와 호환이 되어야 합니다. 이를 달성하기 위해 구현의 매개변수 유형을 any로 선언 하였습니다. any 타입이 싫은 개발자는  string | boolean으로 선언해도 됩니다.

그런 다음 함수내에서 매개변수의 타입을 확인하고 이를 기반으로 조건부로 로직을 실행하게 코드를 작성해야 합니다.  예에서는 typeof로 매개변수의 타입을 확인하고 있습니다. 그리고 타입에 맞춰 로직을 만들어 주게 됩니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기