cond-flow
Version:
Elixir style cond for easy javascript control flow
19 lines (18 loc) • 563 B
TypeScript
type Value<T> = T | (() => T);
type Pairs<T> = [boolean, Value<T>][];
type Options<T> = {
/**
* If no match is found, the default is returned instead.
* @default undefined
*/
default?: Value<T>;
};
interface Cond {
<T, F extends undefined>(pairs: Pairs<T>, options?: F): T | undefined;
<T1, F1 extends Value<T1>>(pairs: Pairs<T1>, options?: {
default: F1;
}): F1 extends Value<T1> ? T1 : T1 | undefined;
<T2>(pairs: Pairs<T2>, options?: Options<T2>): T2 | undefined;
}
declare const cond: Cond;
export default cond;