Skip to content

useValidTypeof

Diagnostic Category: lint/suspicious/useValidTypeof

Since: v1.0.0

Sources:

This rule verifies the result of typeof $expr unary expressions is being compared to valid values, either string literals containing valid type names or other typeof expressions

typeof foo === "strnig"
code-block.js:1:16 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Invalid typeof comparison value

> 1 │ typeof foo === “strnig”
^^^^^^^^
2 │

not a valid type name

typeof foo == "undefimed"
code-block.js:1:15 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Invalid typeof comparison value

> 1 │ typeof foo == “undefimed”
^^^^^^^^^^^
2 │

not a valid type name

typeof bar != "nunber"
code-block.js:1:15 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Invalid typeof comparison value

> 1 │ typeof bar != “nunber”
^^^^^^^^
2 │

not a valid type name

typeof bar !== "fucntion"
code-block.js:1:16 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Invalid typeof comparison value

> 1 │ typeof bar !== “fucntion”
^^^^^^^^^^
2 │

not a valid type name

typeof foo === undefined
code-block.js:1:16 lint/suspicious/useValidTypeof  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Invalid typeof comparison value

> 1 │ typeof foo === undefined
^^^^^^^^^
2 │

not a string literal

Unsafe fix: Compare the result of typeof with a valid type name

1 │ typeof·foo·===·undefined
+ +
typeof bar == Object
code-block.js:1:15 lint/suspicious/useValidTypeof  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Invalid typeof comparison value

> 1 │ typeof bar == Object
^^^^^^
2 │

not a string literal

Unsafe fix: Compare the result of typeof with a valid type name

1 - typeof·bar·==·Object
1+ typeof·bar·==·object
2 2

typeof foo === baz
code-block.js:1:16 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Invalid typeof comparison value

> 1 │ typeof foo === baz
^^^
2 │

not a string literal

typeof foo == 5
code-block.js:1:15 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Invalid typeof comparison value

> 1 │ typeof foo == 5
^
2 │

not a string literal

typeof foo == -5
code-block.js:1:15 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Invalid typeof comparison value

> 1 │ typeof foo == -5
^^
2 │

not a string literal

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