Skip to main content

No Implicit Boolean

Require explicit comparisons in conditions instead of relying on truthy/falsy coercion.

Summary

The no-implicit-boolean rule reports bare identifiers, member expressions, call expressions, and their negations (!value, !fn()) when used as conditions in if, while, do...while, for, and ternary statements.

For logical expressions (&&, ||), each operand is checked independently.

Why Use This Rule?

  1. Prevents subtle bugs from truthy/falsy coercion (e.g., 0, "", and null are all falsy).
  2. Makes the developer's intent explicit (=== undefined, === true, > 0).
  3. Keeps conditions self-documenting so readers understand what is actually being checked.

Examples

Configuration

Options

warning

ignoreFiles is an escape hatch for files where this rule genuinely does not apply. It is not intended for routine use.

OptionTypeDefaultDescription
ignoreFilesstring[][]File patterns to skip.

Autofix

Autofix is not available for this rule. Flagged code must be updated manually.

Troubleshooting

  • Warning fires on !Array.isArray(x) — Use Array.isArray(x) === false instead. All negations of identifiers, member expressions, and call expressions are flagged.
  • Warning fires on if (value && other) — Each operand in a logical expression is checked independently. Both value and other need explicit comparisons.
  • Warning fires on a ternary condition — Ternary conditions are checked the same as if conditions. Use an explicit comparison like (isDryRun === true) ? a : b.