내장 제네릭 ReturnType<T>을 이를 사용하지 않고 구현하세요.
const fn = (v: boolean) => {
if (v)
return 1
else
return 2
}
type a = MyReturnType<typeof fn> // should be "1 | 2"
만들고자 하는 제네릭은 타입 변수로 함수 타입을 받는다.
type MyReturnType<T extends (...args: any[]) => any> = T extends (
...args: any[]
) => infer U ? U : never;
조건부를 통해 리턴 값을 추론하여 추론 한 타입을 반환한다.