# no-extra-boolean-cast
禁止不必要的布尔类型转换
配置文件中的 "extends": "eslint:recommended" 属性启用了该规则
一些该规则报告的问题可以通过 --fix 命令行选项 自动修复
在 if
语句的测试等上下文中,表达式的结果已经被强制转换为布尔值,不需要通过双重否定 (!!
) 或 Boolean
调用转换为布尔值。例如,这些 if
语句是等效的:
if (!!foo) {
// ...
}
if (Boolean(foo)) {
// ...
}
if (foo) {
// ...
}
# 规则详情
此规则不允许不必要的布尔类型转换。
此规则的错误代码示例:
/*eslint no-extra-boolean-cast: "error"*/
var foo = !!!bar;
var foo = !!bar ? baz : bat;
var foo = Boolean(!!bar);
var foo = new Boolean(!!bar);
if (!!foo) {
// ...
}
if (Boolean(foo)) {
// ...
}
while (!!foo) {
// ...
}
do {
// ...
} while (Boolean(foo));
for (; !!foo; ) {
// ...
}
此规则的正确代码示例:
/*eslint no-extra-boolean-cast: "error"*/
var foo = !!bar;
var foo = Boolean(bar);
function foo() {
return !!bar;
}
var foo = bar ? !!baz : !!bat;
# 选项
此规则有一个对象选项:
"enforceForLogicalOperands"
设置为true
时,除了检查默认上下文外,还会检查额外的布尔转换是否包含在逻辑表达式中。默认值为false
,这意味着默认情况下此规则不会警告逻辑表达式中的额外布尔值。
# enforceForLogicalOperands
此规则的错误代码示例,其中 "enforceForLogicalOperands"
选项设置为 true
:
/*eslint no-extra-boolean-cast: ["error", {"enforceForLogicalOperands": true}]*/
if (!!foo || bar) {
//...
}
while (!!foo && bar) {
//...
}
if ((!!foo || bar) && baz) {
//...
}
foo && Boolean(bar) ? baz : bat
var foo = new Boolean(!!bar || baz)
此规则的正确代码示例,其中 "enforceForLogicalOperands"
选项设置为 true
:
/*eslint no-extra-boolean-cast: ["error", {"enforceForLogicalOperands": true}]*/
if (foo || bar) {
//...
}
while (foo && bar) {
//...
}
if ((foo || bar) && baz) {
//...
}
foo && bar ? baz : bat
var foo = new Boolean(bar || baz)
var foo = !!bar || baz;