使用以下代码:
var x:boolean = true;
x &= false;
error TS2447: The '&=' operator is not allowed for boolean types. Consider using '&&' instead.
我环顾四周但却找不到原因,有一个PR可以使错误发生错误:https://github.com/Microsoft/TypeScript/issues/712但是仍然无法找到它的根本原因。
有人可以澄清吗?
答案 0 :(得分:3)
我无法代表TypeScript的设计人员发言,但& (bitwise AND)运算符旨在对两个整数执行按位AND运算。您的变量是布尔值,这些值使用&& (logical AND)组合。
在TypeScript中,您可以设想创建&&=
运算符,但&&
运算符使用短路评估,其中评估在结果已知时停止,这意味着x &&= y
的语义变为有点阴云密布。
答案 1 :(得分:0)
Typescript 4.0+现在支持逻辑分配。这是在线example。
type Bool = boolean | null | undefined;
let x: Bool = true;
x &&= false; // => false
x &&= null; // => null
x &&= undefined; // => undefined
let y: Bool = false;
y &&= true; // => false
y &&= null; // => false
y &&= undefined; // => false
等同于
type Bool = boolean | null | undefined;
let x: Bool = true;
x && x = false; // => false
x && x = null; // => null
x && x = undefined; // => undefined
let y: Bool = false;
y && y = true; // => false
y && y = null; // => false
y && y = undefined; // => false