版本

valid-typeof

强制将 `typeof` 表达式与有效字符串进行比较

推荐

配置文件 中使用来自 `@eslint/js` 的 `recommended` 配置启用了此规则

💡 hasSuggestions

此规则报告的一些问题可以通过编辑器 建议 手动修复

对于大多数用例,`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 中引入的。

进一步阅读

资源

更改语言