Skip to main content

integer

Accepts only finite whole numbers.
const integer: Decoder<number>

Validation Rules

  • Must be a finite number (rejects NaN and Infinity)
  • Must be a whole number (no decimal places)
  • Accepts negative integers, zero, and positive integers

Examples

import { integer } from 'decoders';

const result1 = integer.decode(42);        // ✓ Ok(42)
const result2 = integer.decode(-10);       // ✓ Ok(-10)
const result3 = integer.decode(0);         // ✓ Ok(0)
const result4 = integer.decode(3.14);      // ✗ Error: "Number must be an integer"
const result5 = integer.decode(NaN);       // ✗ Error: "Number must be finite"
const result6 = integer.decode(Infinity);  // ✗ Error: "Number must be finite"

Use Cases

  • Array indices
  • Count values
  • ID fields that must be whole numbers
  • Age or year values

positiveInteger

Accepts only non-negative (zero or positive) finite whole numbers.
const positiveInteger: Decoder<number>

Validation Rules

  • Must be a finite number
  • Must be a whole number
  • Must be greater than or equal to 0
  • Rejects -0 (negative zero)

Examples

import { positiveInteger } from 'decoders';

const result1 = positiveInteger.decode(42);   // ✓ Ok(42)
const result2 = positiveInteger.decode(0);    // ✓ Ok(0)
const result3 = positiveInteger.decode(-1);   // ✗ Error: "Number must be positive"
const result4 = positiveInteger.decode(3.5);  // ✗ Error: "Number must be an integer"
const result5 = positiveInteger.decode(-0);   // ✗ Error: "Number must be positive"

Use Cases

  • Array lengths
  • Counts and quantities
  • Pagination page numbers
  • Non-negative ID values

bigint

Accepts any valid bigint value.
const bigint: Decoder<bigint>

Validation Rules

  • Must be a JavaScript bigint type
  • Accepts any valid bigint value (no range restrictions)

Examples

import { bigint } from 'decoders';

const result1 = bigint.decode(42n);                    // ✓ Ok(42n)
const result2 = bigint.decode(-1000n);                 // ✓ Ok(-1000n)
const result3 = bigint.decode(9007199254740991n);      // ✓ Ok(9007199254740991n)
const result4 = bigint.decode(42);                     // ✗ Error: "Must be bigint"
const result5 = bigint.decode("42");                   // ✗ Error: "Must be bigint"

Use Cases

  • Large integer values beyond Number.MAX_SAFE_INTEGER
  • Cryptographic operations
  • High-precision integer calculations
  • Blockchain and cryptocurrency amounts

Build docs developers (and LLMs) love