ReturnType 유틸리티 타입
ReturnType이란 무엇일까?
- 함수의 반환 타입 추론 → 새로운 타입 생성하는 유틸리티 타입
type ReturnType<T extends (...args: any) => any> = T extends (...args: any)
=> infer R ? R : any;
해석
함수를 상속받는 타입 T를 타입 인자로 받음
함수 타입 T의 반환값을 추론했을 때 R이면 R 그대로 주고, 아니면 any로 주는 구문
함수 타입이 아닌 경우에는, 타입 인자로 넘기는 과정에서 바로 타입 에러가 난다.
만약 함수 타입인 경우에는 Return하는 값을 그대로 제너릭으로 넘기기 때문에 리턴 값을 any로 지정해두지 않은 이상 반환 타입 값을 그대로 받게 된다.
참고 자료
- 해석이 잘 안되서 다음 자료를 참고했습니다.
- https://joshua1988.github.io/ts/usage/infer.html#infer%EC%9D%98-%EC%9C%A0%ED%9A%A8%EB%B2%94%EC%9C%84
사용 예시
function getMessage() {
return "Hello World";
}
type MessageType = ReturnType<typeof getMessage>; // string
- ReturnType을 사용하면 함수에서 반환하는 타입을 지정하지 않아도 유추해서 받을 수 있다.
- 이를 통해 타입 안정성 또한 보장받을 수 있다.