Skip to content

Number

Works with TypeScript number values.

This module exposes the native Number constructor together with helpers for checking, parsing, arithmetic, safe division, comparison, range checks, clamping, rounding, ordering, equivalence, and numeric aggregation.

30 exports Added in v2.0.0 Source

Constructors

Number

Added in v4.0.0 Source

Exposes the global number constructor.

When to use

Use to access native JavaScript numeric coercion from the Effect module namespace.

Gotchas

This follows native Number coercion rules, including empty strings becoming 0 and invalid numeric strings becoming NaN.

See

  • parse for parsing strings into an Option Example (Coercing values to numbers) ``ts import.meta.vitest import { Number as N } from "effect" N.Number("42") // => 42 N.Number("3.14") // => 3.14 ``

Signature

declare const Number: NumberConstructor;

parse

Added in v2.0.0 Source

Parses a number from a string safely using the Number() function. The following special string values are supported: "NaN", "Infinity", "-Infinity".

When to use

Use to parse numeric text without throwing on invalid input.

See

  • Number for native constructor coercion

Signature

declare function parse(s: string): Option<number>;

Guards

isNumber

Added in v2.0.0 Source

Checks whether a value is a number.

When to use

Use to validate unknown input and narrow it to number.

Signature

declare const isNumber: (input: unknown) => input is number;

Instances

Equivalence

Added in v2.0.0 Source

Equivalence instance for numbers where NaN is considered equal to NaN.

When to use

Use when checking numeric equality through APIs that accept an equivalence relation.

Signature

declare const Equivalence: Equ.Equivalence<number>;

Order

Added in v2.0.0 Source

Order instance for number values.

When to use

Use when you need to sort or compare numbers through APIs that accept an ordering instance.

Signature

declare const Order: order.Order<number>;

Math

clamp

Added in v2.0.0 Source

Restricts the given number to be within the range specified by the minimum and maximum values.

When to use

Use to force a number into an inclusive range.

Details

- If the number is less than the minimum value, the function returns the minimum value. - If the number is greater than the maximum value, the function returns the maximum value. - Otherwise, it returns the original number.

See

  • between for checking whether a number is already inside a range

Signature

declare const clamp: {
  (options: { maximum: number; minimum: number }): (self: number) => number;
  (
    self: number,
    options: {
      maximum: number;
      minimum: number;
    },
  ): number;
};

decrement

Added in v2.0.0 Source

Decrements a number by 1.

When to use

Use to decrement a numeric counter by one.

Signature

declare function decrement(n: number): number;

divide

Added in v2.0.0 Source

Divides numbers safely, returning Option.none() if the divisor is 0.

When to use

Use to divide numbers while representing division by zero as Option.none.

See

  • divideUnsafe for division that throws when the divisor is zero
  • remainder for the numeric remainder operation

Signature

declare const divide: {
  (that: number): (self: number) => Option<number>;
  (self: number, that: number): Option<number>;
};

divideUnsafe

Added in v4.0.0 Source

Divides two number values without returning an Option.

When to use

Use to divide number values where the divisor is known to be non-zero and a plain number result is preferred over handling Option.none.

Gotchas

Throws a RangeError if the divisor is 0.

See

  • divide for division that returns Option.none when the divisor is zero

Signature

declare const divideUnsafe: {
  (that: number): (self: number) => number;
  (self: number, that: number): number;
};

increment

Added in v2.0.0 Source

Returns the result of adding 1 to a given number.

When to use

Use to increment a numeric counter by one.

Signature

declare function increment(n: number): number;

max

Added in v2.0.0 Source

Returns the maximum between two numbers.

When to use

Use to select the larger of two numbers.

See

  • min for selecting the smaller value

Signature

declare const max: {
  (that: number): (self: number) => number;
  (self: number, that: number): number;
};

min

Added in v2.0.0 Source

Returns the minimum between two numbers.

When to use

Use to select the smaller of two numbers.

See

  • max for selecting the larger value

Signature

declare const min: {
  (that: number): (self: number) => number;
  (self: number, that: number): number;
};

multiply

Added in v2.0.0 Source

Provides a multiplication operation on numbers.

When to use

Use to multiply two numbers.

See

Signature

declare const multiply: {
  (that: number): (self: number) => number;
  (self: number, that: number): number;
};

multiplyAll

Added in v2.0.0 Source

Takes an Iterable of numbers and returns their multiplication as a single number.

When to use

Use to multiply all numbers in an iterable.

See

Signature

declare function multiplyAll(collection: Iterable<number>): number;

nextPow2

Added in v2.0.0 Source

Returns the next power of 2 from the given number.

When to use

Use to round a number up to the next power of two.

Signature

declare function nextPow2(n: number): number;

ReducerMax

Added in v4.0.0 Source

Reducer for reducing numbers by keeping the maximum value.

When to use

Use to keep the largest number through APIs that consume a Reducer.

Details

The reducer starts from -Infinity, so reducing an empty collection returns -Infinity.

Gotchas

NaN values propagate through Math.max.

See

  • ReducerMin for keeping the smallest number
  • max for comparing two numbers directly

Signature

declare const ReducerMax: Reducer.Reducer<number>;

ReducerMin

Added in v4.0.0 Source

Reducer for reducing numbers by keeping the minimum value.

When to use

Use to keep the smallest number through APIs that consume a Reducer.

Details

The reducer starts from Infinity, so reducing an empty collection returns Infinity.

Gotchas

NaN values propagate through Math.min.

See

  • ReducerMax for keeping the largest number
  • min for comparing two numbers directly

Signature

declare const ReducerMin: Reducer.Reducer<number>;

Reducer for combining numbers using multiplication.

When to use

Use to multiply many numbers through APIs that consume a Reducer.

Details

The reducer starts from 1, so reducing an empty collection returns 1.

Gotchas

Reducing an iterable short-circuits when it sees 0, so later elements are not consumed.

See

Signature

declare const ReducerMultiply: Reducer.Reducer<number>;

ReducerSum

Added in v4.0.0 Source

Reducer for combining numbers using addition.

When to use

Use to sum many numbers through APIs that consume a Reducer.

Details

The reducer starts from 0, so combineAll([]) returns 0.

See

Signature

declare const ReducerSum: Reducer.Reducer<number>;

remainder

Added in v2.0.0 Source

Returns the remainder left over when one operand is divided by a second operand, always taking the sign of the dividend.

When to use

Use to compute a numeric remainder while preserving decimal precision better than direct JavaScript % for decimal operands.

See

  • divide for quotient calculation with division-by-zero represented as Option.none

Signature

declare const remainder: {
  (divisor: number): (self: number) => number;
  (self: number, divisor: number): number;
};

round

Added in v3.8.0 Source

Returns the number rounded with the given precision.

When to use

Use to round a number to a fixed number of decimal places.

Signature

declare const round: {
  (precision: number): (self: number) => number;
  (self: number, precision: number): number;
};

sign

Added in v2.0.0 Source

Determines the sign of a given number.

When to use

Use to classify a number as negative, zero, or positive.

Signature

declare function sign(n: number): Ordering;

subtract

Added in v2.0.0 Source

Provides a subtraction operation on numbers.

When to use

Use to subtract one number from another.

Signature

declare const subtract: {
  (that: number): (self: number) => number;
  (self: number, that: number): number;
};

sum

Added in v2.0.0 Source

Provides an addition operation on numbers.

When to use

Use to add two numbers.

See

  • sumAll for summing an iterable of numbers

Signature

declare const sum: {
  (that: number): (self: number) => number;
  (self: number, that: number): number;
};

sumAll

Added in v2.0.0 Source

Takes an Iterable of numbers and returns their sum as a single number.

When to use

Use to sum all numbers in an iterable.

See

  • sum for adding two numbers
  • ReducerSum for summing through APIs that consume a Reducer

Signature

declare function sumAll(collection: Iterable<number>): number;

Predicates

between

Added in v2.0.0 Source

Checks whether a number is between a minimum and maximum value (inclusive).

When to use

Use to test whether a number falls inside an inclusive range.

See

  • clamp for forcing a number into an inclusive range

Signature

declare const between: {
  (options: { maximum: number; minimum: number }): (self: number) => boolean;
  (
    self: number,
    options: {
      maximum: number;
      minimum: number;
    },
  ): boolean;
};

Returns true if the first argument is greater than the second, otherwise false.

When to use

Use to test whether one number is strictly greater than another.

Signature

declare const isGreaterThan: {
  (that: number): (self: number) => boolean;
  (self: number, that: number): boolean;
};

Returns a function that checks if a given number is greater than or equal to the provided one.

When to use

Use to test whether one number is greater than or equal to another.

Signature

declare const isGreaterThanOrEqualTo: {
  (that: number): (self: number) => boolean;
  (self: number, that: number): boolean;
};

isLessThan

Added in v4.0.0 Source

Returns true if the first argument is less than the second, otherwise false.

When to use

Use to test whether one number is strictly less than another.

Signature

declare const isLessThan: {
  (that: number): (self: number) => boolean;
  (self: number, that: number): boolean;
};

Returns a function that checks if a given number is less than or equal to the provided one.

When to use

Use to test whether one number is less than or equal to another.

Signature

declare const isLessThanOrEqualTo: {
  (that: number): (self: number) => boolean;
  (self: number, that: number): boolean;
};