eslint/no-unsafe-negation 正确性
它的作用
禁止对关系运算符的左操作数进行取反,以防止因误解运算符优先级或意外使用取反而导致的逻辑错误。
该规则可在 TypeScript 代码中禁用,因为 TypeScript 编译器会强制执行此检查。
为什么这是个问题?
对关系运算符的左操作数进行取反可能导致意外的行为,这是由于运算符优先级导致的,从而引发逻辑错误。例如,!a in b 可能被解释为 (!a) in b 而不是 !(a in b),而这并非预期的逻辑。
示例
此规则的 错误 代码示例:
javascript
if (!key in object) {}
if (!obj instanceof Ctor) {}此规则的 正确 代码示例:
javascript
if (!(key in object)) {}
if (!(obj instanceof Ctor)) {}配置
此规则接受一个配置对象,包含以下属性:
enforceForOrderingRelations
type: boolean
default: false
enforceForOrderingRelations 选项决定是否允许对顺序关系运算符(<、>、<=、>=)左侧的表达式进行取反。
其目的是避免出现如 !a < b 这类表达式(等价于 (a ? 0 : 1) < b),而实际意图应为 !(a < b)。
如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"rules": {
"no-unsafe-negation": "error"
}
}bash
oxlint --deny no-unsafe-negation