Skip to content

number ​

A finite number. NaN, Infinity and strings are rejected.

Signature ​

ts
function number(msg?: Message): Schema<number>

Parameters ​

ParameterTypeDescription
msgMessageCustom message. Replaces the default messages for all errors of this schema

Accepts ​

A number for which Number.isFinite(value) === true. Zero is a valid value, not an empty one.

undefined, null and '' are treated as empty — see Empty values.

Error codes ​

CodeWhenDefault message
requiredThe value is emptyRequired
numberNot a number, NaN or InfinityMust be a number

You can change the texts: see Messages & i18n.

Numbers from forms and query strings ​

HTML forms and query strings send numbers as strings ("42"). Use coerce.number — it converts the string to a number.

Example ​

Item quantity ​

ts
const qty = pipe(number(), integer(), min(1), max(99));

validate(qty, 3);    // valid
validate(qty, '3');  // Must be a number — use coerce.number()
validate(qty, 0);    // Must be at least 1

See also ​