UNPKG

ts-sum-types

Version:

Algebraic sum types for TypeScript, designed after Rust's enums

10 lines (9 loc) 628 B
import { TagType, TagArrayMap } from './util'; import { ValueFactory } from './valueFactory'; import { VariantFactory } from './variantFactory'; export declare type SumType<Tag extends TagType, ArgsMap extends TagArrayMap<Tag>, ValueMap extends TagArrayMap<Tag>> = { [a_Tag in Tag]: VariantFactory<a_Tag, TagArrayMap<a_Tag, ArgsMap[a_Tag]>, TagArrayMap<a_Tag, ValueMap[a_Tag]>>; }; export declare function SumType<Tag extends TagType, ArgsMap extends TagArrayMap<Tag>, ValueMap extends TagArrayMap<Tag>>(map: { [a_Tag in Tag]: ValueFactory<ArgsMap[a_Tag], ValueMap[a_Tag]>; }): SumType<Tag, ArgsMap, ValueMap>;