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 Arrayfails 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-builtinsjson
{
"rules": {
"unicorn/no-instanceof-builtins": "error"
}
}