分布式条件类型为何会意外拆散联合类型,怎样显式控制分发
简答题困难966 次浏览
参考答案与解析
核心结论:当条件类型左侧是裸类型参数时,传入联合类型会逐成员计算,再把结果重新联合,这被称为分布式条件类型。它非常适合实现过滤、提取和按成员变换,但当需求是判断“整个联合是否满足条件”时,默认分发会产生错误语义。常用控制方法是把待判断类型包在单元素元组或其他非裸结构中,使条件只执行一次。
底层机制可以理解为编译器对 T extends U ? X : Y 的实例化规则:若 T 是未被包装的类型参数,A | B 会被展开为分别以 A、B 代入的两个条件结果。由于 never 与任意类型组成联合后都会被消去,这一机制可以自然实现联合过滤。例如满足目标约束的成员返回自身,不满足的成员返回 never,最终就只
