Skip to content
← Back to rules

eslint/no-obj-calls 正しさ

This rule is turned on by default.

何をするか

グローバルオブジェクトを関数として呼び出すことを禁止します。

このルールは、TypeScript コードでは無効化できます。なぜなら TypeScript コンパイラがこのチェックを強制しているためです。

なぜ悪いのか

一部のグローバルオブジェクトは関数として呼び出すことを意図していません。 それらを関数として呼び出すと、通常は TypeError がスローされます。

このルールに対して誤りなコードの例:

javascript
let math = Math();
let newMath = new Math();

let json = JSON();
let newJson = new JSON();

let atomics = Atomics();
let newAtomics = new Atomics();

let intl = Intl();
let newIntl = new Intl();

let reflect = Reflect();
let newReflect = new Reflect();

このルールに対して正しいコードの例:

javascript
let area = (r) => 2 * Math.PI * r * r;
let object = JSON.parse("{}");
let first = Atomics.load(sharedArray, 0);
let segmenterFrom = Intl.Segmenter("fr", { granularity: "word" });

使い方

設定ファイルまたは CLI でこのルールを有効化するには、次のように使用できます:

json
{
  "rules": {
    "no-obj-calls": "error"
  }
}
bash
oxlint --deny no-obj-calls

参照