hkt-toolbelt
Version:
Functional and composable type utilities
33 lines (32 loc) • 1.19 kB
TypeScript
import { Type, Kind, Number as Number_, NaturalNumber, DigitList } from '..';
/**
* `_$isEven` is a type-level function that takes in a natural number type,
* `A`, and returns a boolean indicating whether `A` is an even number
*
* @template {Number_.Number} A - A natural number.
* @returns {boolean}
*/
export type _$isEven<T extends Number_.Number, LIST extends DigitList.DigitList = NaturalNumber._$toList<T>, RESULT = DigitList._$isEven<LIST>> = RESULT;
/**
* `IsEven` is a type-level function that takes in a natural number type,
* `A`, and returns a boolean indicating whether `A` is an even number
*
* @template {Number_.Number} A - A natural number.
* @returns {boolean}
*/
export interface IsEven extends Kind.Kind {
f(x: Type._$cast<this[Kind._], Number_.Number>): Number_._$isNatural<typeof x> extends true ? _$isEven<typeof x> : never;
}
/**
* Given a natural number, return whether or not it is an even number.
*
* @param {Number_.Number} x - The natural number to check.
*
* @example
* ```ts
* import { NaturalNumber } from "hkt-toolbelt";
*
* const T0 = NaturalNumber.isEven(42); // true
* ```
*/
export declare const isEven: Kind._$reify<IsEven>;