我有以下代码:
var a: boolean = ...;
var b: boolean = ...;
if (a ^ b) { // this line gives error
// ...
}
但是,TypeScript 编译器给出了一个错误:
error TS2113: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
是不是因为按位运算符只适用于数字?如果直接用 JavaScript 编写,代码运行得非常好。
除了 if (a ? !b : a) { ... }
之外还有其他选择吗?
更新 鉴于它们都是 bool 值,我可以只使用 a !== b
请您参考如下方法:
正如您所建议的,^
根据 TypeScript 规范,运算符和所有其他按位运算符只能应用于数字类型。
我知道的唯一解决方法是:
- 选角:
<number><any>a ^ <number><any>b
- 取反相等:
a !== b
我在 GitHub 上开了一个问题来跟踪这个: