generic + extends

강력한 generic 타입을 통해 입력되는 값의 타입을 추측하는 것은
좋은 일이다.

하지만 모든 타입을 고려해 함수를 작성하는 일은 잘 없기 때문에 extends를 사용해 narrowing을 해주도록 하자

<T extends {length:number}> 이 코드의 뜻은
T를 사용해 generic 타입을 사용할 것인데 T의 method인 length가 number타입을 가질 수 있는지를 판별해 input값을 가려받는다.


function longest<T extends {length:number}>(a:T,b:T){
	if(a.length>=b.length){
		return a;
	}else{
		return b;
	}
}

const longerArray = longest([1,2],[3,4,5]);
const longerString = longest('abc','abcde');
const longerNumber= longest(1,23); // error!

좋은 웹페이지 즐겨찾기