条件类型的高级映射与类型推断实战
本教程深入讲解如何利用条件类型、映射类型与 infer 关键字结合,实现动态类型转换与复杂类型推断。 · 难度:入门 · +10XP
条件类型的高级映射与类型推断实战
条件类型是 TypeScript 最强大的特性之一,但很多开发者仅停留在基础用法。本教程将展示如何结合映射类型和 infer 关键字,从复杂联合类型中提取特定结构、将函数签名转换为 Promise 版本,甚至自动生成类型守卫。核心在于利用 infer 在条件分支中捕获类型变量,配合分布式条件类型实现批量转换。你将学会编写可复用的高级类型工具,如 DeepPick、ReturnTypePromise 等,大幅提升类型系统的表达能力。
type DeepPick<T, K extends keyof T> = {
[P in K]: T[P] extends object ? DeepPick<T[P], keyof T[P]> : T[P]
}
type ReturnTypePromise<T> = T extends (...args: any[]) => Promise<infer R> ? R : never
type Example = { a: { b: number; c: string }; d: boolean }
type Picked = DeepPick<Example, 'a'> // { a: { b: number; c: string } }