rivo
Version:
🤖 The ultimate library you need for composable type-level programming in TypeScript, powered by HKT.
23 lines (20 loc) • 486 B
TypeScript
import type { Arg0, Fn } from "../HKT";
import type { AssertNum } from "../helpers";
/**
* Get the absolute value of a number.
*
* Sig: `(n: number) => number`
*/
export type Abs<N extends number> = AssertNum<
number extends N ? number
: `${N}` extends `-${infer T extends number}` ? T
: N
>;
/**
* [Fn] Get the absolute value of a number.
*
* Sig: `(n: number) => number`
*/
export default interface AbsFn extends Fn<[number], number> {
def: () => Abs<Arg0<this>>;
}