UNPKG

ts-sum-types

Version:

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

14 lines (13 loc) 601 B
import { TagType, TagArrayMap } from './util'; import { Matchable } from './matchable'; export interface Variant<Map extends TagArrayMap> extends Matchable<Map> { } export declare class VariantClass<Tag extends TagType, Map extends TagArrayMap<Tag>> implements Variant<Map> { private readonly tag; private readonly value; constructor(tag: Tag, value: Map[Tag]); match(fns: { [a_Tag in Tag]: (...value: Map[a_Tag]) => void; }): void; } export declare function Variant<Tag extends TagType, Map extends TagArrayMap<Tag>>(tag: Tag, value: Map[Tag]): Variant<Map>;