Skip to content
← Back to rules

eslint/no-extra-boolean-cast 正确性

This rule is turned on by default.
🛠️💡 An auto-fix and a suggestion are available for this rule for some violations.

它做了什么

此规则禁止不必要的布尔值转换。

为什么这是不好的?

if 语句的条件等上下文中,表达式的结果将被自动强制转换为布尔值,因此通过双否定(!!)或 Boolean 调用进行布尔值转换是多余的。

示例

以下为 错误 代码示例:

javascript
var foo = !!!bar;
var foo = Boolean(!!bar);

if (!!foo) {
}
if (Boolean(foo)) {
}

// 启用 "enforceForInnerExpressions" 选项时
if (!!foo || bar) {
}

以下为 正确 代码示例:

javascript
var foo = !bar;
var foo = Boolean(bar);

if (foo) {
}
if (foo) {
}

// 启用 "enforceForInnerExpressions" 选项时
if (foo || bar) {
}

配置

此规则接受一个配置对象,包含以下属性:

enforceForInnerExpressions

type: boolean

default: false

当设置为 true 时,除了检查默认上下文外,还会检查在布尔值上下文中使用的表达式中是否存在多余的布尔值转换。参见下面的示例。默认为 false,意味着该规则默认不会对嵌套表达式中的多余布尔值转换发出警告。

如何使用

要通过配置文件或 CLI 启用 此规则,可以使用:

json
{
  "rules": {
    "no-extra-boolean-cast": "error"
  }
}
bash
oxlint --deny no-extra-boolean-cast

参考资料