Docs
/
TypeScript
Chapter 14

14 — Conditional Types & infer

Core Concepts

  • Conditional typesT extends U ? X : Y — type-level if/else
  • infer keyword — extract a type from within a conditional check
  • Distributive conditionals — unions are distributed automatically
  • Nested conditionals — chain multiple conditions
  • Type-level programming — build complex types from simpler ones

Key Patterns

PatternWhat It Does
T extends string ? A : BBranch based on type
T extends (infer U)[] ? U : neverExtract element type
T extends (...args: infer P) => any ? P : neverExtract params
T extends Promise<infer R> ? R : TUnwrap Promise