Skip to content

parseFiniteNumber

Parses a value into a finite number. This parser combines the normalizeFiniteNumber normalizer with the validateFiniteNumber primitive validator to produce a canonical finite numeric value.

The parser never throws and never mutates input. It returns a structured ParseResult<number> describing success or failure.

Signature

function parseFiniteNumber(
    value: unknown,
    field?: string
): ParseResult<number>

Behavior

  • Accepted inputs:
  • Primitive finite numbers (3.14, 0, -7)
  • Numeric strings ("3", " 3.14 ", "0007", "2.0")
  • Strings are trimmed before parsing
  • Only simple decimal notation is allowed
  • Rejected inputs:
  • NaN, Infinity, and -Infinity
    • Produces: "Value could not be normalized into a finite number"
  • Rejected inputs:
  • Non-numeric strings ("abc").
  • Malformed numeric strings ("3.14.5", "3e2").
  • Empty or whitespace-only strings.
  • Objects, arrays, functions.
  • Booleans.
  • null and undefined.
  • Boxed Number objects.
    • These produce: "Value must be a finite number"

Returns

A ParseResult<number> object:

  • ok: true And the finite number when parsing succeeds.
  • ok: false, value: null: And a list of issues when parsing fails.

Examples

parseFiniteNumber(" 3.14 ")
// { ok: true, value: 3.14, issues: [] }

parseFiniteNumber("3e2")
// { ok: false, value: null, issues: ["Value must be a finite number"] }

parseFiniteNumber(NaN)
// { ok: false, value: null, issues: ["Value could not be normalized into a finite number"] }

Notes

  • This parser is stricter than parseNumber because it rejects scientific notation.
  • For integer-only parsing, use parseInteger.