版本

valid-typeof

強制比較 typeof 表達式與有效的字串

建議

設定檔中使用來自 @eslint/jsrecommended 設定會啟用此規則

💡 有建議

此規則回報的一些問題可以透過編輯器的建議手動修復

在絕大多數的使用案例中,typeof 運算子的結果是以下字串常值之一:"undefined""object""boolean""number""string""function""symbol""bigint"。將 typeof 運算子的結果與其他字串常值進行比較通常是一種輸入錯誤。

規則詳細資訊

此規則強制比較 typeof 表達式與有效的字串常值。

此規則的錯誤程式碼範例

在遊樂場中開啟
/*eslint valid-typeof: "error"*/

typeof foo === "strnig"
typeof foo == "undefimed"
typeof bar != "nunber"
typeof bar !== "fucntion"

此規則的正確程式碼範例

在遊樂場中開啟
/*eslint valid-typeof: "error"*/

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

選項

此規則有一個物件選項

  • "requireStringLiterals": true 允許將 typeof 表達式僅與字串常值或其他 typeof 表達式進行比較,並禁止與任何其他值進行比較。預設值為 false

requireStringLiterals

使用 { "requireStringLiterals": true } 選項的錯誤程式碼範例

在遊樂場中開啟
/*eslint valid-typeof: ["error", { "requireStringLiterals": true }]*/

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

使用 { "requireStringLiterals": true } 選項的正確程式碼範例

在遊樂場中開啟
/*eslint valid-typeof: ["error", { "requireStringLiterals": true }]*/

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

何時不使用它

如果您將在主機物件上使用 typeof 運算子,您可能需要關閉此規則。

版本

此規則在 ESLint v0.5.0 中引入。

延伸閱讀

資源

變更語言