TypeScript 中泛型约束与条件类型结合时,为什么你的类型推断总是不对?
写 TypeScript 的业务代码时,泛型约束和条件类型经常一起出现。比如实现一个 pick 函数,或者给某个工具类型加一层过滤。很多人在这种场景下会突然发现:明明写了 T extends object,为什么传入 string 时类型没报错?或者条件类型 T extends Function ? A : B 在联合类型上表现和预期完全不一样?这些问题通常来自两个机制:泛型约束只在声明位置检查,不参与条件类型的分配式推演;而条件类型默认对裸类型参数做分配式(distributive)展开,一旦 T 是联合...