Skip to content
← Back to rules

eslint/valid-typeof 正しさ

This rule is turned on by default.
🛠️ An auto-fix is available for this rule for some violations.

何をするか

typeof 式の結果が有効な文字列と比較されることを強制します。

なぜ問題なのか

ほとんどの場合、typeof 演算子の結果は次の文字列リテラルのいずれかになります:"undefined""object""boolean""number""string""function""symbol""bigint"typeof 演算子の結果を他の文字列リテラルと比較することは、通常タイプミスです。

このルールに違反する 誤った コードの例:

js
typeof foo === "strnig";
typeof foo == "undefimed";
typeof bar != "nunber"; // spellchecker:disable-line
typeof bar !== "fucntion"; // spellchecker:disable-line

このルールに準拠する 正しい コードの例:

js
typeof foo === "string";
typeof bar == "undefined";
typeof foo === baz;
typeof bar === typeof qux;

設定

このルールは以下のプロパティを持つ設定オブジェクトを受け入れます。

requireStringLiterals

type: boolean

default: false

requireStringLiterals オプションを true に設定すると、typeof 式の比較は文字列リテラルまたは他の typeof 式に限定され、それ以外の値との比較は禁止されます。デフォルトは false です。

requireStringLiteralstrue の場合、次のコードは 誤り です:

js
typeof foo === undefined;
typeof bar == Object;
typeof baz === "strnig";
typeof qux === "some invalid type";
typeof baz === anotherVariable;
typeof foo == 5;

requireStringLiteralstrue の場合、次のコードは 正しい です:

js
typeof foo === "undefined";
typeof bar == "object";
typeof baz === "string";
typeof bar === typeof qux;

使い方

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

json
{
  "rules": {
    "valid-typeof": "error"
  }
}
bash
oxlint --deny valid-typeof

参照