paarthenon / variant

Variant types in TypeScript
https://paarthenon.github.io/variant/
Mozilla Public License 2.0
185 stars 3 forks source link
adt algebraic-data-type discriminated-unions dispatching flux redux type-theory typescript union variant variants

Variant Build Status npm NPM

A variant type is like an enum but each case can hold some extra data.

npm i -S variant

Variant aims to bring the experience of variant types to TypeScript. Variant types, a.k.a. discriminated unions in the TypeScript world, are an excellent tool for describing and handling flexible domain models and tiny DSLs. However, because "TypeScript instead builds on JavaScript patterns as they exist today" using them as-is can result in tedious and fragile code. This project addresses that by providing well-typed, fluent, and expressive tools to safely do away with the boilerplate.

Variant Logo Documentation

✨ Variant 3.0 is in active development. Documentation featuring 3.0 features will be available shortly. In the meantime, the changes are available here.

everything below this line is project documentation for developers. Please use the website linked just above.


Initial setup

npm install

build

npm run build

test

npm test

Questions, comments, and contributions are welcome. Open an issue.