kakasoo

함수의 리턴 타입 알아내기 본문

프로그래밍/TypeScript

함수의 리턴 타입 알아내기

카카수(kakasoo) 2023. 3. 6. 22:53
반응형
 

GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge

Collection of TypeScript type challenges with online judge - GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge

github.com

type MyReturnType<T> = T extends (...args:any[]) => infer R ? R : never;

어떤 타입 T를 정의할 때, 그 T에 대한 정의는 반드시 제너릭 쪽에 되어야 할 필요가 없다.

제너릭 내부에서 extends를 사용하는 것은 타입제한을 설정한다고 하며, 제너릭 타입 제한, 제너릭 제약 조건이라고 부른다.

반대로 외부에서 extends를 사용하는 것은 인터페이스나 클래스의 타입 정의에서 상위 타입을 지정하는 것으로, 상속, 확장이라 한다.

이 문제는, infer R을 써야 하기 때문에 제너릭이 아니라 상속을 통해 해결해야 했다.

infer 키워드는 제너릭 타입 매개변수의 타입 추론을 위해 사용하기 때문에, 제너릭 내부에서는 사용할 수 없다.

반응형