[TS] infer (타입 추론)

TIL

infer는 조건부 타입 내에서 특정 타입을 추론하는 키워드이다.

ReturnType 구현

함수 타입에서 반환값의 타입만 추출하는 ReturnType을 만들어보자.

type ReturnType<T> = T extends () => infer R ? R : never;

type FuncA = () => string;
type FuncB = () => number;

type A = ReturnType<FuncA>; // string
type B = ReturnType<FuncB>; // number

동작 원리

조건식 T extends () => infer R에서 infer R은 조건식을 참으로 만드는 최적의 R 타입을 추론하라는 의미다.

타입 A를 계산하는 과정은 다음과 같다.

1단계: 타입 변수 T에 FuncA가 할당된다.

  • T = () => string

2단계: 조건식이 다음 형태가 된다.

  • () => string extends () => infer R ? R : never

3단계: 조건식을 참으로 만드는 R 타입을 추론한다.

  • R = string

4단계: 추론 성공 시 조건식이 참이 되어 R을 반환한다.

  • 결과: string

 

추론 실패

추론이 불가능하면 조건식이 거짓이 된다.

type C = ReturnType<number>;
// number는 함수 타입이 아니므로 R 추론 불가능
// never

 

PromiseUnpack 구현

Promise의 resolve 타입을 추출하는 타입도 만들 수 있다.

type PromiseUnpack<T> = T extends Promise<infer R> ? R : never;

type PromiseA = PromiseUnpack<Promise<number>>; // number
type PromiseB = PromiseUnpack<Promise<string>>; // string

T가 Promise<R> 형태일 때, R 타입을 추론하여 반환한다.

'TIL' 카테고리의 다른 글

[CS50] C 기초  (0) 2025.11.05
[TS] 조건부 타입과 infer를 활용한 타입 추론 연습  (0) 2025.11.05
[TS] 분산적인 조건부 타입  (0) 2025.11.05
[TS] 타입 조작 및 고급 타입 활용 연습  (0) 2025.11.05
[TS] 템플릿 리터럴 타입  (0) 2025.11.05
'TIL' 카테고리의 다른 글
  • [CS50] C 기초
  • [TS] 조건부 타입과 infer를 활용한 타입 추론 연습
  • [TS] 분산적인 조건부 타입
  • [TS] 타입 조작 및 고급 타입 활용 연습
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    Next.js
    Spa
    typescript
    트러블 슈팅
    자료구조
    useState
    cs50
    react
    인터페이스
    ai 감성 일기장
    algorithm
    클래스
    제네릭
    바닐라 자바스크립트
    emotion diary
    함수 타입
    Pages Router
    generic
    Trouble Shooting
    페이지 라우터
    App Router
    문자열
    앱 라우터
    C
    memory
    CS
    타입 좁히기
    배열
    javascript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
[TS] infer (타입 추론)
상단으로

티스토리툴바