[typescript]함수 오버로딩

Hyoyoung Kim·2023년 8월 30일
0

TypeScript TIL

목록 보기
19/39

함수 오버로딩

하나의 함수를 매개변수의 개수나 타입에 따라 다르게 동작하도록 만드는 문법

  • 하나의 함수 func를 만든다.
  • 일단 모든 매개변수는 넘버타입으로 설정
  • Ver1. 매개변수가 1개일 때에는 매개변수에 20을 곱한 값을 출력
  • Ver2. 매개변수가 3개일 때에는 모든 매개변수를 더한 값을 출력
//타입스크립트에서 함수 오버로딩을 구현하려면 먼저 다음과 
//같이 버전별 오버로드 시그니쳐를 만들어 줘야 합니다.
//이렇게 구현부 없이 선언부만 만들어둔 함수를 ‘오버로드 시그니쳐’라고 합니다. 
// 버전들 -> 오버로드 시그니쳐
function func(a: number): void;
function func(a: number, b: number, c: number): void;

//오버로드 시그니쳐를 만들었다면 다음으로는 구현 시그니쳐를 만들어줘야 합니다.
// 구현 시그니쳐는 실제로 함수가 어떻게 실행될 것인지를 정의하는 부분입니다.
// 실제 구현부 -> 구현 시그니쳐
function func(a: number, b?: number, c?: number) {
   // 버전 1, 버전 2 둘다 있는 매개변수는 냅두고 
 //버전 1에 없는 b,c매개변수를 선택적 매개변수로 만들어 준다.
   if (typeof b === "number" && typeof c === "number") {
     console.log(a + b + c);
   } else {
     console.log(a * 20);
   }
 }

 func(1);        // ✅ 버전 1 - 오버로드 시그니쳐
//   func(1, 2);     // ❌ 
//-> 매개변수가 두개인 버전(오버로드 시그니쳐)가 없기에 오류발생
 func(1, 2, 3);  // ✅ 버전 3 - 오버로드 시그니쳐

0개의 댓글