rivo
Version:
🤖 The ultimate library you need for composable type-level programming in TypeScript, powered by HKT.
23 lines (19 loc) • 562 B
TypeScript
import type { List } from ".";
import type { Args, GenericFn, GenericResolver } from "../HKT";
/**
* Convert a {@link List} to a union type.
*
* Sig: `<T>(xs: List<T>) => T`
*/
export type ToUnion<TS extends List> = TS[number];
interface Resolver extends GenericResolver<[List], unknown> {
on1: ([xs]: Args<this>) => [[], (typeof xs)[number]];
}
/**
* [Fn] Convert a {@link List} to a union type.
*
* Sig: `<T>(xs: List<T>) => T`
*/
export default interface ToUnionFn extends GenericFn<Resolver> {
def: ([xs]: Args<this>) => ToUnion<typeof xs>;
}