Skip to content

Tiny typescript utility for dealing with discriminated unions

License

Notifications You must be signed in to change notification settings

rerion/tiny-variant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tiny-variant - tiny utility for dealing with variants in typescript

Usage

type MyVariant = Variant<{
    Sum: number[];
    Product: number[];
    Str: string;
    Empty: void;
}>;

const { Sum, Product, Str, Empty } = variant<VariantMap<MyVariant>>();

const someOption = Sum([1, 2, 7, 8]);

const reduced = match<MyVariant>(someOption, {
    Sum: arr => arr.reduce((a, b) => a+b),
    Product: arr => arr.reduce((a, b) => a*b),
    Str: s => s.length,
    Empty: () => 0,
}); // reduced == 18

Warning

Implementation of variant function depends on Proxy

About

Tiny typescript utility for dealing with discriminated unions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published