用途:处理 TypeScript 条件类型在联合类型上分发(distribute)导致的行为偏差,尤其是 boolean 被当作 true | false、never 被当作空联合、以及递归泛型类型未能正确分发的情况。
主要能力与规则:条件类型默认对联合分发。要阻止分发,把条件包进单元素元组,写成 [T] extends [X];要强制分发,加一个裸条件,如 N extends any ? ... : never。
典型表现:V extends true ? 'Huzzah!' : never 对 boolean 会得到 'Huzzah!',因为 boolean 按 true | false 分发;对 never 会得到 never,因为 never 是空联合;递归的 NTuple<T, 2 | 3> 不会自动拆成两个结果,需要加 N extends number 这类裸条件来触发分发。
使用方式:编写条件类型时,若传入并集、boolean 或 never,先判断是否符合预期;需要保持整体判断就用 [T] extends [X],需要逐成员展开就用裸条件。文中给出的 Comparable<T> 示例展示了如何让 Date | string 正确求值为 never。
适用场景:类型级编程、泛型工具类型、类型安全比较函数等对联合与边界类型敏感的场景。
限制:官方文本未提供;本条目依据公开技能描述整理,未提供安装命令、版本要求、收费与平台信息。