eslint/eqeqeq Pedantic
What it does
Requires the use of the === and !== operators, disallowing the use of == and !=.
Why is this bad?
Using non-strict equality operators leads to unexpected behavior due to type coercion, which can cause hard-to-find bugs.
Options
First option:
- Type:
string - Default:
"always"
Possible values:
"always"- always require===/!=="smart"- allow safe comparisons (typeof, literals, nullish)
Second option (only used with "always"):
- Type:
object - Properties:
null:string(default:"always") -"ignore"allows== nulland!= null.
Possible values for null:
"always"- always require=== null/!== null"never"- always require== null/!= null"ignore"- allow both== null/!= nulland=== null/!== null
Example JSON configuration:
{
"eqeqeq": ["error", "always", { "null": "ignore" }]
}Examples
"always" (default)
Examples of incorrect code for this rule:
/* eslint eqeqeq: "error" */
if (x == 42) {}
if ("" == text) {}
if (obj.getStuff() != undefined) {}Examples of correct code for this rule:
/* eslint eqeqeq: "error" */
if (x === 42) {}
if ("" === text) {}
if (obj.getStuff() !== undefined) {}"smart"
Examples of incorrect code for this rule with the "smart" option:
/* eslint eqeqeq: ["error", "smart"] */
if (x == 42) {}
if ("" == text) {}Examples of correct code for this rule with the "smart" option:
/* eslint eqeqeq: ["error", "smart"] */
if (typeof foo == "undefined") {}
if (foo == null) {}
if (foo != null) {}{"null": "ignore"} (with "always" first option)
Examples of incorrect code for this rule with the { "null": "ignore" } option:
/* eslint eqeqeq: ["error", "always", { "null": "ignore" }] */
if (x == 42) {}
if ("" == text) {}Examples of correct code for this rule with the { "null": "ignore" } option:
/* eslint eqeqeq: ["error", "always", { "null": "ignore" }] */
if (foo == null) {}
if (foo != null) {}{"null": "always"} (default - with "always" first option)
Examples of incorrect code for this rule with the { "null": "always" } option:
/* eslint eqeqeq: ["error", "always", { "null": "always" }] */
if (foo == null) {}
if (foo != null) {}Examples of correct code for this rule with the { "null": "always" } option:
/* eslint eqeqeq: ["error", "always", { "null": "always" }] */
if (foo === null) {}
if (foo !== null) {}{"null": "never"} (with "always" first option)
Examples of incorrect code for this rule with the { "null": "never" } option:
/* eslint eqeqeq: ["error", "always", { "null": "never" }] */
if (x == 42) {}
if ("" == text) {}
if (foo === null) {}
if (foo !== null) {}Examples of correct code for this rule with the { "null": "never" } option:
/* eslint eqeqeq: ["error", "always", { "null": "never" }] */
if (x === 42) {}
if ("" === text) {}
if (foo == null) {}
if (foo != null) {}Configuration
This rule accepts a configuration object with the following properties:
compareType
type: "always" | "smart"
nullType
type: "always" | "never" | "ignore"
How to use
To enable this rule in the CLI or using the config file, you can use:
oxlint --deny eqeqeq{
"rules": {
"eqeqeq": "error"
}
}