# valid-typeof

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

配置文件中的 "extends": "eslint:recommended" 属性启用了该规则

对于绝大多数用例,typeof 运算符的结果是以下字符串字面之一:"undefined""object""boolean""number""string""function""symbol""bigint"。将 typeof 运算符的结果与其他字符串字面进行比较通常是输入错误。

# 规则详情

此规则强制将 typeof 表达式与有效的字符串字面进行比较。

# 选项

此规则有一个对象选项:

  • "requireStringLiterals": true 要求 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 } 选项的错误代码示例:

/*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 运算符,您可能需要关闭此规则。

Last Updated: 5/13/2023, 8:55:38 PM