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;
}
