hkt-toolbelt
Version:
Functional and composable type utilities
44 lines (43 loc) • 1.08 kB
TypeScript
import { Kind, Type } from '..';
/**
* `_$toNumber` is a type-level function that takes in a boolean `B` and returns
* either `1` or `0`.
*
* @template {boolean} B - The boolean to convert to a number.
*
* @example
* ```ts
* type T0 = _$toNumber<true> // 1
* type T1 = _$toNumber<false> // 0
* ```
*/
export type _$toNumber<B extends boolean> = B extends true ? 1 : 0;
/**
* `ToNumber` is a type-level function that takes in a boolean `B` and returns
* either `1` or `0`.
*
* @template {boolean} B - The boolean to convert to a number.
*
* @example
* ```ts
* type T0 = $<Boolean.ToNumber, true> // 1
* type T1 = $<Boolean.ToNumber, false> // 0
* ```
*/
export interface ToNumber extends Kind.Kind {
f(x: Type._$cast<this[Kind._], boolean>): _$toNumber<typeof x>;
}
/**
* Given a boolean, return either 1 or 0.
*
* @param {boolean} b - The boolean to convert.
*
* @example
* ```ts
* import { Boolean } from "hkt-toolbelt";
*
* const result = Boolean.toNumber(true)
* // ^? 1
* ```
*/
export declare const toNumber: Kind._$reify<ToNumber>;