<> 안에 타입명을 기재하여 표기any를 쓰면 어떤 타입이든 받을 수 있지만, 함수가 반환하는 값의 타입 정보를 잃어버려 타입 안정성이 상실any를 쓰고 있는데, 반환되는 값의 타입이 무엇인지 정확히 알고 싶을 때특정 조건을 만족하는 타입만 받도록 제한 가능
extends 키워드를 사용
interface RequiredLength {
length: number;
}
function getLength<T extends RequiredLength>(arg: T): number {
return arg.length;
}
getLength([]);
getLength('test');
// getLength(1); // Error Argument of type 'number' is not assignable to parameter of type 'RequiredLength'.