The typeof operator returns a string indicating the type of its argument, and the set of returned values is limited:
-
"undefined"
-
"boolean"
-
"number"
-
"string"
-
"symbol" (since ECMAScript 2015)
-
"function"
-
"object" (for null and any other object)
-
"bigint" (since ECMAScript 2020)
Compare a typeof expression to anything else, and the result will always be false.
function isNumber(x) {
return typeof x === "Number"; // Noncompliant: the function always returns 'false'
}
Instead, make sure you are always comparing the expression against one of the seven possible values.
function isNumber(x) {
return typeof x === "number";
}