Skip to content

validateFiniteNumber

Checks whether a value is a finite number. This helper uses the isFiniteNumber type guard internally. A finite number is any JavaScript number that is not NaN, Infinity, or -Infinity.

It never throws and never mutates input. Use it when you need a strict finite number before normalization or further validation.

Signature

function validateFiniteNumber(value: unknown, field: string): ValidationResult<number>

Parameters

Name Data type Description
value unknown The value to validate.
field string The name of the field being validated, used in error reporting.

Returns

One of:

  • { ok: true, value: number }: If value is a finite number.
  • { ok: false, field: string, message: string }: If value is not a finite number.

Behavior

  • Uses isFiniteNumber internally.
  • Accepts integers and fractional numbers.
  • Rejects NaN, Infinity, and -Infinity.
  • Rejects non-number types.
  • Never throws or mutates input.

Examples

validateFiniteNumber(123, "count")
// { ok: true, value: 123 }

validateFiniteNumber(1.5, "float")
// { ok: true, value: 1.5 }

validateFiniteNumber(NaN, "notANumber")
// { ok: false, field: "notANumber", message: "Value must be a finite number" }

validateFiniteNumber(Infinity, "inf")
// { ok: false, field: "inf", message: "Value must be a finite number" }

validateFiniteNumber("123", "string")
// { ok: false, field: "string", message: "Value must be a finite number" }

Notes

  • This validator does not coerce values. Strings like "5" and booleans return an error.
  • Because it depends on isFiniteNumber, values such as NaN, Infinity, and -Infinity automatically fail.
  • Suitable for validating numeric inputs where fractional values are allowed but must be real, finite numbers.
  • The validator never throws and never mutates input. All error reporting goes through structured ValidationResult objects.