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 NaNIn 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 |