UNPKG

safe-integer-ts

Version:

Newtype wrapper of number type as safe-integer (53-bit precise integer)

41 lines (40 loc) 1.6 kB
declare const IS_SAFE_INTEGER: unique symbol; /** * A number, which is validated as *safe integer* or 53-bit precise integer. * * @see [Number.isSafeInteger()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger) */ export declare type SafeInteger = number & { [IS_SAFE_INTEGER]: true; }; /** * Checks if an unknown value is safe integer without any conversion. */ export declare const isSafeInteger: (value: unknown) => value is SafeInteger; /** * Casts an unknown value as safe integer without any conversion; or null if unable. */ export declare const asSafeInteger: (value: unknown) => SafeInteger | null; /** * Parses a string as safe integer; or null if unable. * * This function just forwards to [Number.parseInt()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt). */ export declare const parseSafeInteger: (str: string, radix?: number | undefined) => SafeInteger | null; /** * Tries to convert an unknown value to safe integer, using some conversions if necessary: `Math.round`, `parseInt` or `.valueOf`. * * Mapping: * * - number: * - safe integer: the value * - finite number: `Math.round` and `asSafeInteger` is used. * - infinity, NaN: null * - string: `parseInt` and `asSafeInteger` is used. * - object: * - non-null and has `valueOf`: `.valueOf()` and `asSafeInteger` is used. * - other: null * - undefined, boolean, function and anything else: null */ export declare const toSafeInteger: (value: unknown) => SafeInteger | null; export {};