ReturnType 유틸리티 타입

ReturnType이란 무엇일까?

  • 함수의 반환 타입 추론 → 새로운 타입 생성하는 유틸리티 타입
type ReturnType<T extends (...args: any) => any> = T extends (...args: any) 
=> infer R ? R : any;

해석

  • 함수를 상속받는 타입 T를 타입 인자로 받음

  • 함수 타입 T의 반환값을 추론했을 때 R이면 R 그대로 주고, 아니면 any로 주는 구문

  • 함수 타입이 아닌 경우에는, 타입 인자로 넘기는 과정에서 바로 타입 에러가 난다.

  • 만약 함수 타입인 경우에는 Return하는 값을 그대로 제너릭으로 넘기기 때문에 리턴 값을 any로 지정해두지 않은 이상 반환 타입 값을 그대로 받게 된다.

참고 자료

사용 예시

function getMessage() {
    return "Hello World";
}

type MessageType = ReturnType<typeof getMessage>;  // string
  • ReturnType을 사용하면 함수에서 반환하는 타입을 지정하지 않아도 유추해서 받을 수 있다.
  • 이를 통해 타입 안정성 또한 보장받을 수 있다.