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,这意味着此规则默认不会警告内层表达式中的额外布尔类型 转换。

使用方法

To enable this rule using the config file or in the CLI, you can use:

json
{
  "rules": {
    "no-extra-boolean-cast": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "no-extra-boolean-cast": "error",
  },
});
bash
oxlint --deny no-extra-boolean-cast

版本

此规则在 v0.0.8 中添加。

参考