假设我有一些简单的逻辑:
let bool = false
const seven = 7
const arr = [1,2,3,4,5,6,7]
arr.forEach(element => {
if (element === seven) {
bool = true
}
});
现在我不想调用函数如果"已设置为true:
if (bool === true){
doSomething()
}
Typescript在这种情况下给出了一个错误:
This condition will always return 'false' since the types 'false' and 'true' have no overlap.
Typescript抱怨,即使逻辑上我知道bool在触发条件块时将为真。我该如何解决这个问题?
我不知道Typescript编译器会抱怨这样的事情,但这是一个奇怪的方式有这样一个条件语句,因为:
if (bool === true)
等于:
if (bool)
但是你也可以:
- 按正常方式写条件:
if (bool) { ... }
(强烈推荐) - 强制类型为布尔值:
if((bool as boolean) === true ) { ... }
(它可以工作,但请不要这样做)