Typescript 布尔比较生成TS2365错误
下面的代码获取Typescript 布尔比较生成TS2365错误,typescript,Typescript,下面的代码获取TS2365:运算符“==”不能应用于类型“false”和“true”。if(b===true)上的错误 设b=false; 设arr=[1,2,3,4,5]; arr.forEach(val=>{ if(val{ if(val
TS2365:运算符“==”不能应用于类型“false”和“true”。
if(b===true)上的错误
设b=false;
设arr=[1,2,3,4,5];
arr.forEach(val=>{
if(val<3){
b=正确;
}
});
如果(b==true){//生成TS2365错误
}
我已阅读并理解,如果条件从未满足,Typescript将生成此错误
但条件将得到满足,因为arr
的值小于3
为什么会出现此错误?这是typescript进行流分析以确定
b
的分配方式的一个限制。这样的分析并没有交叉作用的奖金。看
一个简单的解决方案是在分配b
时使用类型断言
let b = false as boolean;
let arr = [1, 2, 3, 4, 5];
arr.forEach(val => {
if (val < 3) {
b = true;
}
});
if (b === true) { // ok
}
设b=false为布尔值;
设arr=[1,2,3,4,5];
arr.forEach(val=>{
if(val<3){
b=正确;
}
});
如果(b==true){//ok
}
用简单的语言编写,下面的代码部分
b===true
始终为false,因为TypeScript引擎在显式指定之前和除非显式指定它,否则不会将b解释为布尔值,因为===运算符也会检查操作数类型的相等性
因此,我认为以下代码也应该起作用:
b == true
因为它会自动执行操作数的类型转换
b == true