如何在 Typescript 中切换布尔值?
How do I toggle a boolean in Typescript?
在Javascript(以及许多其他语言)中,我们可以这样做:
arrayOfObjects[i].propertyAlsoArray[j] ^= true;
Typescript 不允许逻辑运算符 ^
、&
和 |
。这是 a safety feature,所以我必须这样做:
arrayOfObjects[i].propertyAlsoArray[j] = !arrayOfObjects[i].propertyAlsoArray[j];
有没有更短的方法避免重复?
我认为没有更短的方法。
你可以这样做
const toggle = (array: Array<bool>, index: number): void => {
array[index] = !array[index];
}
toggle(arrayOfObjects[i].propertyAlsoArray, j);
这取决于你需要执行多少次。
你也不能在 javascript 中这样做:
let bool = true;
console.log(bool == true); // true
console.log(bool === true); // true
bool ^= true;
console.log(bool == false); // true
console.log(bool === false); // false
如您所见,"toggle" 之后的值不是 false
,而是 0
。
这就是编译器抱怨它的原因,因为您正在将变量的类型从 boolean
更改为 number
.
如果您不介意这种类型的变化,那么您可以这样做:
function toggle(arr: { propertyAlsoArray: number[] }[], i: number, j: number) {
arr[i].propertyAlsoArray[j] ^= 1;
}
let arr: { propertyAlsoArray: (boolean | number)[] }[];
toggle(arr as { propertyAlsoArray: number[] }[], 1, 1);
但是您现在使用 !=
可能是最好的方法。
我知道很久以前有人问过这个问题,但它可能对其他人有帮助,shorthand 在 TypeScript 上切换一个值是:
let yourVar = false;
varToggle() {
this.yourVar = !this.yourVar;
}
在Javascript(以及许多其他语言)中,我们可以这样做:
arrayOfObjects[i].propertyAlsoArray[j] ^= true;
Typescript 不允许逻辑运算符 ^
、&
和 |
。这是 a safety feature,所以我必须这样做:
arrayOfObjects[i].propertyAlsoArray[j] = !arrayOfObjects[i].propertyAlsoArray[j];
有没有更短的方法避免重复?
我认为没有更短的方法。 你可以这样做
const toggle = (array: Array<bool>, index: number): void => {
array[index] = !array[index];
}
toggle(arrayOfObjects[i].propertyAlsoArray, j);
这取决于你需要执行多少次。
你也不能在 javascript 中这样做:
let bool = true;
console.log(bool == true); // true
console.log(bool === true); // true
bool ^= true;
console.log(bool == false); // true
console.log(bool === false); // false
如您所见,"toggle" 之后的值不是 false
,而是 0
。
这就是编译器抱怨它的原因,因为您正在将变量的类型从 boolean
更改为 number
.
如果您不介意这种类型的变化,那么您可以这样做:
function toggle(arr: { propertyAlsoArray: number[] }[], i: number, j: number) {
arr[i].propertyAlsoArray[j] ^= 1;
}
let arr: { propertyAlsoArray: (boolean | number)[] }[];
toggle(arr as { propertyAlsoArray: number[] }[], 1, 1);
但是您现在使用 !=
可能是最好的方法。
我知道很久以前有人问过这个问题,但它可能对其他人有帮助,shorthand 在 TypeScript 上切换一个值是:
let yourVar = false;
varToggle() {
this.yourVar = !this.yourVar;
}