Skip to content

Latest commit

 

History

History
23 lines (15 loc) · 720 Bytes

safe-number-parse.md

File metadata and controls

23 lines (15 loc) · 720 Bytes

A Better Number() and Number.parseFloat()

const numberSafeParse = (input: string): number | null => {
    if (input.trim() === "") return null;
    let parsed = Number(input);
    if (!Number.isFinite(parsed)) return null;
    return parsed;
};
  • Returns null instead of NaN on failure (with matching type).

  • Doesn't parse things like "42foo" as 42 (vs using Number.parseFloat())

  • Doesn't parse whitespace-only things as 0 (vs using Number())

  • Doesn't parse "Nan" into Nan or "Infinity" into Infinity (vs Number() or Number.parseFloat())

  • Only parses token sequences that are exactly valid JS numbers

source