function longest<Type extends { length:number }>(a: Type, b:Type){
if(a.length>=b.length){
return a;
}else{
return b;
}
}
위 문법을 보게 되면 generic을 확장해 length 속성을 강제해주었다.
위 함수의 인자는 length method를 사용할 수 없는 경우 에러를 일으키게 된다.
function combine<Type>(arr1:Type[],arr2:Type[]):Type[]{
return arr1.concat(arr2);
}
console.log(combine([1,2,3],[4,5,6])); // [1,2,3,4,5,6]
위 문법은 하나의 generic type을 받고 같은 두 배열을 받아 하나의 배열을 return 한다.
위 함수는 combine([1,2],['happy'])
을 받으면 에러를 일으키게 된다.
위 경우 아래와 같이 generic을 확실히 명시해주면 함수는 실행된다.
combine<number|string>([1,2],['happy']) // [1,2,'happy']