Number conversion: just a number please
Converting something to a Number can be a puzzling experience in ECMAScript (ES). There are edge cases with weird results. For example Number(null) or Number([]) return 0. Trying to convert a Symbol will throw a TypeError.
So here's a small utility (a class free object oriented factory) to convert input to the numbers one expects. It returns NaN when conversion doesn't comply to our standards1 (so: [nr utility instance](null) will return NaN).
Notes:
- most edge cases are mitigated, not all.
- Number strings containing ',' (e.g.
0.42.toLocaleString("nl"): '0,42') will also be converted. - By default the function from the the factory does not include 'converting'
Infinity(to ... well ...Infinity). - The way the function converts
Booleans,Infinityor emptyStrings can be modified (sometimes you may want to converttrueto 1 etc.).
The embedded Stackblitz example compares the result of default (ES) conversion (Number(...)) to conversion using the utility for a number of values and shows the use of modifiers to change the way it converts things to Number.
1 Which may very well not be your standards, feel free to comment or modify the function
Top comments (0)