eslint/valid-typeof 正しさ
何をするか
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 です。
requireStringLiterals が true の場合、次のコードは 誤り です:
js
typeof foo === undefined;
typeof bar == Object;
typeof baz === "strnig";
typeof qux === "some invalid type";
typeof baz === anotherVariable;
typeof foo == 5;requireStringLiterals が true の場合、次のコードは 正しい です:
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