eslint/no-new-native-nonconstructor 正しさ
何を行うか
グローバルな非コンストラクタ関数(Symbol、BigInt)に対して new 演算子を使用することを禁止します。
このルールは TypeScript コードでは無効化しても問題ありません。TypeScript コンパイラがこのチェックを強制するためです。
なぜこれは悪いのか
new Symbol や new BigInt の両方とも、関数でありクラスではないため、型エラーが発生します。大文字で始まっていることからクラスであると誤解してしまいがちです。
例
このルールに違反する不適切なコードの例:
js
// TypeError をスロー
let foo = new Symbol("foo");
// TypeError をスロー
let result = new BigInt(9007199254740991);このルールに準拠する正しいコードの例:
js
let foo = Symbol("foo");
let result = BigInt(9007199254740991);使い方
設定ファイルまたは CLI でこのルールを有効化するには、次のように使用できます:
json
{
"rules": {
"no-new-native-nonconstructor": "error"
}
}bash
oxlint --deny no-new-native-nonconstructor