Skip to content

validateNumberRange

Validates that a value is a number within a specified inclusive range. This helper does not coerce values. Only actual numbers are accepted, and NaN is explicitly rejected.

It never throws and never mutates input. Use it when you need to enforce numeric bounds before applying deeper validation or normalization.

Signature

function validateNumberRange(
    value: unknown,
    min: number,
    max: number
): number | undefined

Parameters

Name Data type Description
value unknown The value to validate as a number.
min number Minimum allowed value (inclusive).
max number Maximum allowed value (inclusive).

Returns

One of:

  • The original number if it is within the range.
  • undefined: If the value is not a number, is NaN, or is out of range.

Behavior

  • Only accepts values of type number.
  • Rejects NaN.
  • Rejects numbers below min.
  • Rejects numbers above max.
  • Never mutates input.
  • Never throws.
  • Never coerces values (for example, "5" is invalid).

Examples

validateNumberRange(3, 1, 5)
// 3

validateNumberRange(1, 1, 5)
// 1

validateNumberRange(10, 1, 5)
// undefined

validateNumberRange("5", 1, 5)
// undefined

validateNumberRange(NaN, 1, 5)
// undefined

Notes

  • This validator does not normalize or clamp values.
  • Suitable for validating numeric fields such as ages, counts, limits, and configuration values.
  • The helper is pure, side-effect-free, and never throws.