Skip to content

unicorn/new-for-builtins Pedantic

What it does

Enforces the use of new for the following builtins: Object, Array, ArrayBuffer, BigInt64Array, BigUint64Array, DataView, Date, Error, Float32Array, Float64Array, Function, Int8Array, Int16Array, Int32Array, Map, WeakMap, Set, WeakSet, Promise, RegExp, Uint8Array, Uint16Array, Uint32Array, Uint8ClampedArray, SharedArrayBuffer, Proxy, WeakRef, FinalizationRegistry.

Disallows the use of new for the following builtins: String, Number, Boolean, Symbol, BigInt.

Why is this bad?

Using new inconsistently can cause confusion. Constructors like Array and RegExp should always use new to ensure the expected instance type. Meanwhile, String, Number, Boolean, Symbol, and BigInt should not use new, as they create object wrappers instead of primitive values.

Examples

Examples of incorrect code for this rule:

javascript
const foo = new String("hello world");
const bar = Array(1, 2, 3);

Examples of correct code for this rule:

javascript
const foo = String("hello world");
const bar = new Array(1, 2, 3);

How to use

To enable this rule in the CLI or using the config file, you can use:

bash
oxlint --deny unicorn/new-for-builtins
json
{
  "rules": {
    "unicorn/new-for-builtins": "error"
  }
}

References

Released under the MIT License.