请解释 TypeScript 中条件类型的含义及其工作原理。
考察说明
考查对 TypeScript 类型系统高级特性中条件类型的理解。
回答思路
- 【回答框架 1】条件类型是 TypeScript 中的一种类型操作符,形式为 T extends U ? X : Y,根据类型兼容性条件在类型层面进行分支选择。它允许基于类型关系动态决定最终类型。
- 【回答框架 2】条件类型与 JavaScript 三元表达式类似,但作用于类型。当 T 可赋值给 U 时,结果类型为 X,否则为 Y。典型应用包括类型过滤、类型映射和工具类型的实现。
- 【回答框架 3】分布式条件类型:当 T 是裸类型参数且为联合类型时,条件类型会分布在联合类型的每个成员上,分别应用条件后结果再组成联合。例如,T extends any ? T[] : never 可将联合类型转换为对应数组联合。
- 【回答框架 4】实际应用包括内置工具类型如 Exclude、Extract、NonNullable,以及递归条件类型处理嵌套结构。
- 【回答框架 5】条件类型常与 infer 关键字结合,用于类型推断和提取,例如 ReturnType<T> 从函数类型提取返回类型。
- 【关键点 1】条件类型通过 extends 判断类型可赋值性,返回不同分支。
- 【关键点 2】裸类型参数下的联合类型会触发分布式行为。
- 【关键点 3】infer 关键字用于在条件类型中推断并提取类型。
- 【关键点 4】内置工具类型 Exclude、Extract 等基于条件类型实现。