oxc/bad-object-literal-comparison
Disallow comparing a value with {} or []
items === [] doesn't test whether items is empty. Each [] or {} creates a new object, and === compares objects by identity, so the comparison is always false and !== is always true.
The rule reports ==, !=, === and !== with an empty object or array literal on either side. To test whether something is empty, look at length or at the keys.
Configure#
Off by default. To turn it on:
bunfig.toml
[lint.rules]
"oxc/bad-object-literal-comparison" = "error" # or "warn"Examples#
example.js2 problems
if (items === []Unexpected array literal comparison.) {
showPlaceholder();
}
if (filters !== {}Unexpected object literal comparison.) {
applyFilters(filters);
}example.jsNo problems
if (items.length === 0) {
showPlaceholder();
}
if (Object.keys(filters).length > 0) {
applyFilters(filters);
}