[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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바