unicorn/new-for-builtins 細心
何を実行するか
以下の組み込み関数に対して new の使用を強制します: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。
以下の組み込み関数に対して new の使用を禁止します:String、Number、Boolean、Symbol、BigInt。
なぜこれは問題なのか
new の使用が一貫していないと混乱を招く可能性があります。Array や RegExp のようなコンストラクタは、期待されるインスタンス型を保証するために常に new を使用すべきです。一方で、String、Number、Boolean、Symbol、BigInt については new を使用すべきではありません。これらの値はプリミティブな値ではなく、オブジェクトラッパーを作成してしまうためです。
例
このルールに違反する誤ったコードの例:
javascript
const foo = new String("hello world");
const bar = Array(1, 2, 3);このルールに準拠する正しいコードの例:
javascript
const foo = String("hello world");
const bar = new Array(1, 2, 3);使用方法
設定ファイルまたは CLI でこのルールを有効化するには、以下のようにします:
json
{
"rules": {
"unicorn/new-for-builtins": "error"
}
}bash
oxlint --deny unicorn/new-for-builtins