valid-typeof
强制将 typeof
表达式与有效字符串进行比较
对于绝大多数用例,typeof
运算符的结果是以下字符串字面量之一:"undefined"
、"object"
、"boolean"
、"number"
、"string"
、"function"
、"symbol"
和 "bigint"
。将 typeof
运算符的结果与其他字符串字面量进行比较通常是类型错误。
规则详情
此规则强制将 typeof
表达式与有效字符串字面量进行比较。
此规则的错误代码示例
在游乐场中打开
/*eslint valid-typeof: "error"*/
typeof foo ===
typeof foo ==
typeof bar !=
typeof bar !==
此规则的正确代码示例
在游乐场中打开
/*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 ===
typeof bar ==
typeof baz ===
typeof qux ===
typeof baz ===
typeof foo ==
使用 { "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 中引入的。