在 typescript 中实现布尔类型的异或(xor)逻辑,最简洁、类型安全的方式是直接使用严格不等号 `a !== b`,它天然满足“一真一假”条件,且完全兼容 typescript 的类型系统。
当你需要判断两个布尔值 a 和 b 是否有且仅有一个为 true(即逻辑异或),传统写法如 (a === true && b === false) || (a === false && b === true) 或你尝试的 (a == false && b == true) || (a == true && b == false) 不仅冗长,还存在潜在风险:== 会触发类型强制转换,而 === 虽安全但仍显啰嗦。
✅ 推荐解法:a !== b
这是最优雅、高效且类型安全的 XOR 表达式:
if (a !== b) {
// 只有当 a 与 b 值不同时执行(即一真一假)
console.log("Exactly one is true");
}? 为什么可行?
⚠️ 注意事项:
if (Boolean(a) !== Boolean(b)) { /* 安全处理真值异或 */ }? 小结:a !== b 是 TypeScript 中表达布尔异或的标准、零成本、可读性强的最佳实践——无需额外函数、无类型错误、无运行时开销,应作为首选方案。