打字稿中的条件重叠

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)

但是你可以:

  1. 正常写条件:if (bool) { ... }(强烈推荐)
  2. 强制类型为布尔值:if((bool as boolean) === true ) { ... }(可以,但请不要这样做)