Skip to content

Latest commit

 

History

History
43 lines (30 loc) · 1.23 KB

File metadata and controls

43 lines (30 loc) · 1.23 KB

3. 함수 오버로딩

함수 오버로딩

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


TS에서는 함수 오버로딩을 구현하려면 먼저 다음과 같이 버전별 오버로드 시그니쳐를 마들어줘야 함
// 버전들 -> 오버로드 시그니쳐
function func(a: number): void;
function func(a: number, b: number, c: number): void;

이렇게 구현부 없이 선언부만 만들어둔 함수 = 오버로드 시그니처


오버로드 시그니처를 만들었다면 다음으로는 구현 시그니쳐를 만들어줘야 함. 구현 시그니쳐는 실제로 함수가 어떻게 실행될 것인지를 정의하는 부분

// 버전들 -> 오버로드 시그니쳐
function func(a: number): void;
function func(a: number, b: number, c: number): void;

// 실제 구현부 -> 구현 시그니쳐
function func(a: number, b?: number, c?: number) {
  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 - 오버로드 시그니쳐