【发布时间】:2020-06-09 20:59:23
【问题描述】:
使用 TypeScript 3.9.5 我遇到了 TS 错误:
TS2365:运算符 '!==' 不能应用于类型 'false' 和 'true'
简化示例(代码不做任何事情,但代表实际功能的流程):
function _huh() {
let allStatementsMatched = true
let invoiceIIDsToApply = []
if (_.isEmpty(invoiceIIDsToApply) === false) {
invoiceIIDsToApply.forEach(x => {
if (x.name === 'test') {
allStatementsMatched = false
}
})
// Why does the below statement result in error: TS2365?
if (allStatementsMatched === false) {
}
}
}
我发现 several github 问题正在讨论这个问题,但它们都处理更复杂的场景,我无法看到它们如何应用于我的非常简单的示例。
为什么打字稿不处理boolean like a boolean? “真”和“假”从何而来?
【问题讨论】:
-
我不确定为什么 typescript 在这里给出可疑的控制流分析,但需要注意的是,直接将布尔值与另一个布尔值进行比较是一种不好的形式。只需改用
if (!allStatemetsMatched),它不仅读起来更好,而且还消除了这个错误。
标签: typescript