decoders

Numbers

Number decoders for validating and parsing numeric values.

number

number: Decoder<number> (source)

Accepts only finite numbers (e.g. -3.14, 0, 1, 42, ...). Integers or floats, but not NaN or Infinity.

Try it
number.verify(input)
InputResult
123
-3.14
Infinity ^^^^^^^^ Number must be finite
NaN ^^^ Number must be finite
"not a number" ^^^^^^^^^^^^^^ Must be number

integer

integer: Decoder<number> (source)

Accepts only integers (e.g. ..., -2, -1, 0, 1, 2, ...). Whole numbers, and finite.

Try it
integer.verify(input)
InputResult
123
-3.14 ^^^^^ Number must be an integer
Infinity ^^^^^^^^ Number must be finite
NaN ^^^ Number must be finite
"not a integer" ^^^^^^^^^^^^^^^ Must be number

nonNegativeNumber

nonNegativeNumber: Decoder<number> (source)
positiveNumber: Decoder<number> deprecatediRenamed to nonNegativeNumber in 2.11, since it includes 0.

Available since 2.11.

Accepts only non-negative numbers (e.g. 0, 0.5, 1, 3.14, ...). Integers or floats, >= 0, and finite.

Try it
nonNegativeNumber.verify(input)
InputResult
123
3.14
0
-42 ^^^ Number must be positive
Infinity ^^^^^^^^ Number must be finite
NaN ^^^ Number must be finite
"not a number" ^^^^^^^^^^^^^^ Must be number
0 ^ Number must be positive

natural

natural: Decoder<number> (source)
positiveInteger: Decoder<number> deprecatediRenamed to natural in 2.11, since it includes 0.

Available since 2.11.

Accepts only the natural numbers (e.g. 0, 1, 2, 3, ...). Whole numbers, >= 0, and finite.

Try it
natural.verify(input)
InputResult
123
0
-3 ^^ Number must be positive
3.14 ^^^^ Number must be an integer
Infinity ^^^^^^^^ Number must be finite
NaN ^^^ Number must be finite
"not a number" ^^^^^^^^^^^^^^ Must be number
0 ^ Number must be positive

anyNumber

anyNumber: Decoder<number> (source)

Accepts any valid number value.

This also accepts special values like NaN and Infinity. Unless you want to deliberately accept those, you'll likely want to use the number decoder instead.

Try it
anyNumber.verify(input)
InputResult
123
-3.14
Infinity
NaN
"not a number" ^^^^^^^^^^^^^^ Must be number

bigint

bigint: Decoder<bigint> (source)

Accepts any valid bigint value.

Try it
bigint.verify(input)
InputResult
123n
-4543000000n
123 ^^^ Must be bigint
-3.14 ^^^^^ Must be bigint
Infinity ^^^^^^^^ Must be bigint
NaN ^^^ Must be bigint
"not a number" ^^^^^^^^^^^^^^ Must be bigint

Limiting number ranges

function min( min: number, decoder?: Decoder<number> ): Decoder<number> (source)
function max( max: number, decoder?: Decoder<number> ): Decoder<number> (source)
function between(
  min: number,
  max: number,
  decoder?: Decoder<number>
): Decoder<number> (source)

Available since 2.9.

Rejects values outside the given bounds. Bounds are inclusive. Defaults to the number decoder if none is provided.

Try it
min(0).verify(input)max(100).verify(input)between(0, 100).verify(input)
Inputminmaxbetween
424242
3.1415926535897933.1415926535897933.141592653589793
100100100
-1 ^^ Too low, must be at least 0-1-1 ^^ Too low, must be between 0 and 100
123123 ^^^ Too high, must be at most 100123 ^^^ Too high, must be between 0 and 100

You can pass integer as the number decoder to use to further restrict what kind of numbers are accepted:

Try it
between(1, 100).verify(input)between(1, 100, integer).verify(input)
Inputbetween(1, 100)between(1, 100, integer)
55
3.143.14 ^^^^ Number must be an integer
314.1592653589793 ^^^^^^^^^^^^^^^^^ Too high, must be between 1 and 100314.1592653589793 ^^^^^^^^^^^^^^^^^ Number must be an integer

On this page