Skip to content

useValidTypeof (since v1.0.0)

Diagnostic Category: lint/suspicious/useValidTypeof

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"
suspicious/useValidTypeof.js:1:16 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   Invalid `typeof` comparison value
  
  > 1 │ typeof foo === "strnig"
                  ^^^^^^^^
    2 │ 
  
   not a valid type name
  
typeof foo == "undefimed"
suspicious/useValidTypeof.js:1:15 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   Invalid `typeof` comparison value
  
  > 1 │ typeof foo == "undefimed"
                 ^^^^^^^^^^^
    2 │ 
  
   not a valid type name
  
typeof bar != "nunber"
suspicious/useValidTypeof.js:1:15 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   Invalid `typeof` comparison value
  
  > 1 │ typeof bar != "nunber"
                 ^^^^^^^^
    2 │ 
  
   not a valid type name
  
typeof bar !== "fucntion"
suspicious/useValidTypeof.js:1:16 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   Invalid `typeof` comparison value
  
  > 1 │ typeof bar !== "fucntion"
                  ^^^^^^^^^^
    2 │ 
  
   not a valid type name
  
typeof foo === undefined
suspicious/useValidTypeof.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
suspicious/useValidTypeof.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
suspicious/useValidTypeof.js:1:16 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   Invalid `typeof` comparison value
  
  > 1 │ typeof foo === baz
                  ^^^
    2 │ 
  
   not a string literal
  
typeof foo == 5
suspicious/useValidTypeof.js:1:15 lint/suspicious/useValidTypeof ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   Invalid `typeof` comparison value
  
  > 1 │ typeof foo == 5
                 ^
    2 │ 
  
   not a string literal
  
typeof foo == -5
suspicious/useValidTypeof.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