오버로드 시그니쳐 vs 제네릭 함수

Typescript에서 함수 호출 시 그 타입을 엄격하게 제공하기 위한 2가지 방식으로 동일 사례를 예로 들어보면..

먼저 오버로드 시그니쳐의 경우입니다.

function len(s: string): number; // 오버로드 시그니쳐
function len(arr: any[]): number; // 오버로드 시그니쳐
function len(x: any): number { // 오버로드 시그니쳐
  return x.length;
}

같은 기능으로써의 제네릭 함수 방식입니다.

function len<T extends { length: number }>(x: T) {
  return x.length;
}

하지만 위와 같은 사례의 경우는 간단히 유니언 타입으로 해결이 가능합니다.

function len(x: any[] | string) {
  return x.length;
}

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다