The "extends": "eslint:recommended"
property in a configuration file enables this rule.
The --fix
option on the command line can automatically fix some of the problems reported by this rule.
In contexts such as an if
statement's test where the result of the expression will already be coerced to a Boolean, casting to a Boolean via double negation (!!
) or a Boolean
call is unnecessary. For example, these if
statements are equivalent:
if (!!foo) { // ... } if (Boolean(foo)) { // ... } if (foo) { // ... }
This rule disallows unnecessary boolean casts.
Examples of incorrect code for this rule:
/*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; ) { // ... }
Examples of correct code for this rule:
/*eslint no-extra-boolean-cast: "error"*/ var foo = !!bar; var foo = Boolean(bar); function foo() { return !!bar; } var foo = bar ? !!baz : !!bat;
This rule has an object option:
"enforceForLogicalOperands"
when set to true
, in addition to checking default contexts, checks whether the extra boolean cast is contained within a logical expression. Default is false
, meaning that this rule by default does not warn about extra booleans cast inside logical expression.Examples of incorrect code for this rule with "enforceForLogicalOperands"
option set to 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)
Examples of correct code for this rule with "enforceForLogicalOperands"
option set to 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;
This rule was introduced in ESLint 0.4.0.
© JS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/rules/no-extra-boolean-cast