In TypeScript, how can we check if some value is NaN
?
The following does not work:
someObject.someValue == NaN
someObject.someValue === NaN
In TypeScript, how can we check if some value is NaN
?
The following does not work:
someObject.someValue == NaN
someObject.someValue === NaN
Same as JavaScript, isNaN
.
if (isNaN(someObject.someValue)) ...
Or the more modern Number.isNaN
.
if (Number.isNaN(someObject.someValue)) ...
The difference between the two is that:
isNaN()
will coerce any non-number values (values with typeof value !== 'number'
) into a number, and then perform the comparison; it's checking to anything that becomes NaN
when attempted to convert to a numberNumber.isNaN()
always returns false
when it receives a non-number; it's actually checking for what is already NaN
In other words, with these values, you get these results:
value | isNaN() |
Number.isNaN() |
typeof value === 'number' |
---|---|---|---|
123 |
false |
false |
true |
NaN |
true |
true |
true |
true /false |
false |
false |
false |
'a string' |
true |
false |
false |
new Date() |
false |
false |
false |
[] |
false |
false |
false |
{} |
true |
false |
false |