validatePositiveNumber
Validates a value as a positive number (greater than zero).
This helper never throws and never mutates input. Returns a structured ValidationResult for composable validation pipelines.
Signature
function validatePositiveNumber(
value: unknown,
field: string
): ValidationResult<number>
Parameters
| Name | Type | Description |
|---|---|---|
| value | unknown |
The value to validate. |
| field | string |
The field name for error reporting. |
Returns
{ ok: true; value: number }: If valid.{ ok: false; field: string; message: string }: If invalid.
Examples
validatePositiveNumber(0.1, 'rate'); // → { ok: true, value: 0.1 }
validatePositiveNumber(42, 'count'); // → { ok: true, value: 42 }
validatePositiveNumber(-1, 'index'); // → { ok: false, field: 'index', message: 'Value must be a positive number' }
validatePositiveNumber(0, 'zero'); // → { ok: false, field: 'zero', message: 'Value must be a positive number' }
validatePositiveNumber("5", 'stringVal'); // → { ok: false, field: 'stringVal', message: 'Value must be a positive number' }
Notes
- Only number primitives greater than zero are valid.
- Fractional numbers are allowed.
- Zero, negative numbers, strings,
NaN,Infinity, and non-numeric types fail. - Use
normalizePositiveNumberif input may be a string before validation.