UNPKG

rambdax

Version:

Extended version of Rambda - a lightweight, faster alternative to Ramda

39 lines (34 loc) 1.08 kB
import {_Negate} from './Negate' import {_IsNegative} from './IsNegative' import {IterationOf} from '../Iteration/IterationOf' import {Iteration} from '../Iteration/Iteration' import {Number} from './Number' import {Formats} from '../Iteration/_Internal' import {Format} from '../Iteration/Format' import {NumberMap} from '../Iteration/Maps/Number' import {Map} from '../Iteration/Map' /** @hidden */ export type _Absolute<N extends Iteration, IMap extends Map> = { 0: N 1: _Negate<N, IMap> }[_IsNegative<N>] /** Get the absolute value of a [[Number]] @param N to absolute @param fmt (?=`'s'`) output format @param IMap to operate with another set of numbers @returns `string | number | boolean` @example ```ts import {N} from 'ts-toolbelt' type test0 = N.Absolute<'-20'> // '20' type test1 = N.Absolute<'-20', 's'> // '20' type test2 = N.Absolute<'-20', 'n'> // 20 ``` */ export type Absolute<N extends Number, fmt extends Formats = 's', IMap extends Map = NumberMap> = N extends unknown ? Format<_Absolute<IterationOf<N, IMap>, IMap>, fmt> : never