面试题答案
一键面试在TypeScript中,条件类型分布式特性会在条件类型作用于联合类型时,自动将条件类型应用到联合类型的每个成员上。
实现代码如下:
type ConditionalType<A, B> = A extends string ? B : never;
假设 A
是联合类型,例如 A = string | number
,当使用 ConditionalType<A, boolean>
时,分布式特性会将其拆分为 string extends string ? boolean : never
和 number extends string ? boolean : never
,然后再将结果合并为 boolean | never
,最终解析为 boolean
。
在上述定义的 ConditionalType
类型中,如果 A
是单一类型,当 A
为 string
类型时,就直接返回 B
,否则返回 never
。如果 A
是联合类型,分布式特性就会发挥作用,将条件类型分别应用到联合类型的每个成员上,最后合并结果。