조건문에 쓰이는 타입 중 하나를 이름을 붙여서 빼가지고 삼항에 사용하기 위해서 사용한다.
예제
좌항
ReturnType 에 제네릭으로 전달한 타입 T 를 (...args: any) => any 타입의 이하로 제한해서 받아온다.
우항
함수 타입의 T 의 반환값을 R 로 이름을 붙여서 삼항에서 사용하기 위해서 infer를 사용했다.
extends 는 T 의 반환값을 R 로 명시하기 위해서 사용하것에 불과하다.
T 가 있으면 R 을 반환하고 아니면 any를 반환한다.