我有以下代码:

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 上开了一个问题来跟踪这个:

https://github.com/Microsoft/TypeScript/issues/587


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!