Utilities for manipulating and validating numeric types in TypeScript. These types allow you to check parity, sign, get absolute values, truncate decimals, and generate number ranges at the type level.
import type * as Numbers from "@halvaradop/ts-utility-types/numbers"
IsOdd<T extends number>
Checks if a number is odd.
// Expected: true
type CheckOdd = IsOdd<2023>
// Expected: false
type CheckEven = IsOdd<2024>
IsEven<T extends number>
Checks if a number is even.
// Expected: true
type CheckEven = IsEven<2024>
// Expected: false
type CheckOdd = IsEven<2023>
IsNegative<T extends number>
Checks if a number is negative.
// Expected: true
type CheckNegative = IsNegative<-2024>
// Expected: false
type CheckPositive = IsNegative<2024>
IsPositive<T extends number>
Checks if a number is positive.
// Expected: true
type CheckPositive = IsPositive<2024>
// Expected: false
type CheckNegative = IsPositive<-2024>
Absolute<Expression extends number | string | bigint>
Returns the absolute value of a number, string, or bigint as a string.
// Expected: "2024"
type Positive = Absolute<2024>
// Expected: "2024"
type PositiveString = Absolute<"-2024">
Trunc<Math extends string | number | bigint>
Truncates a number to its integer part.
// Expected: 3
type Truncated = Trunc<3.14>
// Expected: -2
type TruncatedNegative = Trunc<-2.99>
NumberRange<Low extends number, High extends number>
Creates a number range (union type) from Low
to High
(inclusive). Only accepts positive values.
// Expected: 1 | 2 | 3 | 4 | 5
type Range1 = NumberRange<1, 5>
// Expected: never
type Range2 = NumberRange<-1, 5>