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