如何计算属于T或U但不同时属于两者的类型?
实现TS中属于T或U但不同时属于两者的类型
你需要的是类型的对称差集——只存在于类型T或只存在于类型U中的成员,排除同时属于两者的部分。可以通过TypeScript的内置工具类型组合实现:
type SymmetricDifference<T, U> = Exclude<T | U, T & U>;
测试示例
用你给出的类型集合测试:
type Result = SymmetricDifference<1|2|3, 2|3|4>; // 结果为 1 | 4
原理说明
T | U:先获取T和U所有类型的并集(即1|2|3|4)T & U:提取同时存在于T和U中的交集类型(即2|3)Exclude<T | U, T & U>:从并集中剔除交集部分,最终得到仅属于单侧的类型
内容的提问来源于stack exchange,提问作者Adehunoluwa Praise
相关产品推荐
相关产品推荐

