noUnsafeNegation (since v0.7.0)
This rule is recommended by Rome.
Disallow using unsafe negation.
Examples
Invalid
!1 in [1,2];
suspicious/noUnsafeNegation.js:1:1 lint/suspicious/noUnsafeNegation FIXABLE ━━━━━━━━━━━━━━━━━━━━━━
✖ The negation operator is used unsafely on the left side of this binary expression.
> 1 │ !1 in [1,2];
│ ^^^^^^^^^^^
2 │
ℹ Suggested fix: Wrap the expression with a parenthesis
1 │ !(1·in·[1,2]);
│ + +
/**test*/!/** test*/1 instanceof [1,2];
suspicious/noUnsafeNegation.js:1:10 lint/suspicious/noUnsafeNegation FIXABLE ━━━━━━━━━━━━━━━━━━━━━
✖ The negation operator is used unsafely on the left side of this binary expression.
> 1 │ /**test*/!/** test*/1 instanceof [1,2];
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 │
ℹ Suggested fix: Wrap the expression with a parenthesis
1 │ /**test*/!/**·test*/(1·instanceof·[1,2]);
│ + +
Valid
-1 in [1,2];
~1 in [1,2];
typeof 1 in [1,2];
void 1 in [1,2];
delete 1 in [1,2];
+1 instanceof [1,2];