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, isNaN, 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.