Skip to content
You are currently reading docs for v1.x. Go to the latest docs if you are using newer version.

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
biome.json
{
"linter": {
"rules": {
"suspicious": {
"useValidTypeof": "error"
}
}
}
}