더북(TheBook)

오버로딩을 선언하는 순서도 타입 추론에 영향을 끼칩니다.

function example(param: string): string;
function example(param: string | null): number;
function example(param: string | null): string | number {
  if (param) {
    return 'string';
  } else {
    return 123;
  }
}

const result = example('what');
// const result: string

'what'string이므로 첫 번째 오버로딩과 두 번째 오버로딩 모두에 해당될 수 있습니다. 이처럼 여러 오버로딩에 동시에 해당될 수 있는 경우는 제일 먼저 선언된 오버로딩에 해당됩니다. 따라서 result는 첫 번째 오버로딩의 반환값 타입인 string입니다. 오버로딩 순서를 바꿔볼까요?

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.