Are you a Number?

Number.isNaN() and isNaN() behave differently.

  Number.isNaN()   isNaN()
'asdf' false true
undefined false true
'10f' false true
{} false true
"NaN" false true

The MDN docs explain their differences as isNaN() coerces the parameter to a number.

Note that TypeScript only accepts unknown as the parameter type, even though JS handles additional cases (i.e. undefined).

Cases with the same behaviour:

  Number.isNaN()   isNaN()
123 false false
'123' false false
'' false false
' ' false false
null false false
[] false false
Infinity false false
false false false
0/0 true true
NaN true true

Further Reading

Number.isNaN()

isNaN()