TypeScript 类型高级特性与测试实践
条件类型对联合类型的分发
当 T 为 never 时,有如下情况:
type N = AllowIn<never>;
// ^? type N = never
为什么在条件的两边都不是 never 的情况下,结果会评估为 never 呢?这都与对联合类型的分发有关。TypeScript 将 never 类型视为一个空联合,如果没有可分发的内容,就会返回空。若将 T 替换为 T|never (这与 T 相同),会更易理解:
AllowIn<T>
= AllowIn<T | never>
= AllowIn<T> | AllowIn<never>
= AllowIn<T> | never
= AllowIn<T>
显然, T|never 应被视为与 T 相同。当分发适用时,这意味着无论如何定义 F , F<never> 都必须是 never </
超级会员免费看
订阅专栏 解锁全文
436

被折叠的 条评论
为什么被折叠?



