decoders

Numbers

Number decoders for validating and parsing numeric values.

number

number: Decoder<number> (source)

Accepts finite numbers (can be integer or float values). Values NaN, or positive and negative Infinity will get rejected.

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 finite whole numbers.

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

positiveNumber

positiveNumber: Decoder<number> (source)

Accepts only non-negative (zero or positive) finite numbers.

Try it
positiveNumber.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

positiveInteger

positiveInteger: Decoder<number> (source)

Accepts only non-negative (zero or positive) finite whole numbers.

Try it
positiveInteger.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