TypeScript类型中布尔比较的标准实现方式是什么?
TypeScript类型中布尔逻辑运算的标准实现方式
你实现的布尔类型运算逻辑是正确的,但社区里有更简洁、符合习惯的写法,以下是优化后的实现:
与运算(And)
只有当两个布尔值都为true时返回true,否则返回false,可以用交叉类型简化:
type And<T extends boolean, U extends boolean> = T & U extends true ? true : false;
也可以用条件分支的简洁写法:
type And<T extends boolean, U extends boolean> = T extends true ? U extends true ? true : false : false;
或运算(Or)
只要有一个布尔值为true就返回true,否则返回false,你的写法已经很简洁,也可以写成更直接的形式:
type Or<T extends boolean, U extends boolean> = T extends true ? true : U;
异或运算(Xor)
两个布尔值不同时返回true,相同时返回false,可以大幅简化嵌套判断:
type Xor<T extends boolean, U extends boolean> = T extends U ? false : true;
测试用例
type TestAnd1 = And<true, true>; // 结果:true type TestAnd2 = And<true, false>; // 结果:false type TestOr1 = Or<false, true>; // 结果:true type TestOr2 = Or<false, false>; // 结果:false type TestXor1 = Xor<true, false>; // 结果:true type TestXor2 = Xor<true, true>; // 结果:false
内容的提问来源于stack exchange,提问作者TrevTheDev
相关产品推荐
相关产品推荐

