在TypeScript中,条件类型是一种强大的特性,它允许我们在编译时根据条件表达式推导出类型。然而,当涉及到联合类型时,条件类型的行为可能会出乎意料。本文将深入探讨分布式条件类型(Distributive Conditional Types)的概念,并解释为何T extends U会触发联合类型的自动分发。 首先,让我们回顾一下条件类型的语法。条件类型的一般形式如下: T extends U ? X : Y 这里,如果T能够被赋值为U,则类型推导结果为X,否则为Y。 现在,让我们考虑一个联合类型T,它可以是U或V。如果我们尝试将这个联合类型与条件类型结合,会发生什么呢? type T = U | V; type Result = T extends U ? X : Y; // X | Y 在这个例子中,Result的类型是X | Y,这看起来很合理。然而,如果我们改变条件类型,使其依赖于T是否扩展自U,情况就变得有趣了: type Result = T extends U ? X : Y; // X | Y | V 这里,Result的类型变成了X | Y | V,即使T可以是U或V …
继续阅读“分布式条件类型(Distributive Conditional Types):为何 `T extends U` 会触发联合类型的自动分发”