unicorn/no-instanceof-builtins Suspicious ​
What it does ​
Disallows the use of instanceof
with ECMAScript built-in constructors because:
- it breaks across execution contexts (
iframe
, Web Worker, Node VM, etc.); - it is often misleading (e.g.
instanceof Array
fails for a subclass); - there is always a clearer and safer alternative (
Array.isArray
,typeof
,Buffer.isBuffer
, …).
Why is this bad? ​
instanceof
breaks across execution contexts (iframe
, Web Worker, Node vm
), and may give misleading results for subclasses or exotic objects.
Examples ​
Examples of incorrect code for this rule:
javascript
if (arr instanceof Array) { … }
if (el instanceof HTMLElement) { … }
Examples of correct code for this rule:
javascript
if (Array.isArray(arr)) { … }
if (el?.nodeType === 1) { … }
How to use ​
To enable this rule in the CLI or using the config file, you can use:
bash
oxlint --deny unicorn/no-instanceof-builtins
json
{
"rules": {
"unicorn/no-instanceof-builtins": "error"
}
}