Description
matchbook is a lightweight & easy to use pattern matching library,
for TypeScript and JavaScript.
If you want to know more about matchbook,
check out the docs!
🔥 matchbook alternatives and similar modules
Based on the "Control Flow" category.
Alternatively, view matchbook-ts alternatives based on common mentions on social networks and blogs.
-
Bluebird
:bird: :zap: Bluebird is a full featured promise library with unmatched performance. -
co
The ultimate generator based flow-control goodness for nodejs (supports thunks, promises, etc) -
zen-observable
An Implementation of Observables for Javascript -
Neo-Async
Neo-Async is thought to be used as a drop-in replacement for Async, it almost fully covers its functionality and runs faster -
observable-to-promise
Awesome Observable related stuff - An Observable is a collection that arrives over time. -
js-csp
CSP channels for Javascript (like Clojurescript's core.async, or Go) THIS IS AN UPSTREAM FORK -
promise-breaker
Helps you write libraries that accept both promises and callbacks. -
bluebird-co
A set of high performance yield handlers for Bluebird coroutines -
promise-memoize
Memoize promise-returning functions. Includes cache expire and prefetch. -
cpsfy
🚀 Tiny goodies for Continuation-Passing-Style functions, fully tested -
async-chainable
An extension to Async adding better handling of mixed Series / Parallel tasks via object chaining -
Publish / Subscribe
JavaScript implementation of the Publish/Subscribe pattern -
after-all-results
Like after-all, but collects the results for you -
Simple-Series-Parallel
A minimalist utility module for running async functions in series or parallel
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of 🔥 matchbook or a related project?
README
[logo](assets/banner.png)
🔥 matchbook
pattern matching in typescript & javascript made easy
matchbook is a lightweight & easy to use pattern matching library, for TypeScript and JavaScript.
If you want to know more about matchbook, check out the docs or read on!
If you want to start using matchbook, install it like any other npm package:
npm i @matchbook/ts
[it's as easy as a-b-c 1-2-3](assets/readme-samples/static/abc_123.snippet.png)
badges
npm | code | other |
---|---|---|
table of contents
what matchbook does for you
(list is in no particular order)
- expressive - pattern matching helps you write less code that's more expressive than if/else trees
- simple - API is just 5 functions, 1 error class, and some stylistic aliases for the core functions
- powerful - type inference backed by Typescript
- well documented - check out the docs here!
- low cost - no runtime dependencies, & small package size
- reliable - 100% unit test coverage, with all pushes verified via Travis CI
what you can do for matchbook
use it!
The project is very minimal, with the intent of starting with a very simple & focused API that grows with its needs.
ask questions!
If you have any questions, any feedback, or just want to shoot the shirt,
open an issue of type question
, and we'll do our best to answer quickly!
pattern matching explained
Pattern matching is a modern language feature that is similar to a switch
/ case
statement.
With pattern matching, you can switch on the type of the incoming value, meaning you can reduce a lot of extra-verbose if-else branches just by replacing them with pattern matching statements.
You might consider using pattern matching if you find you're switching on types or states frequently, and want to handle the different cases in a concise and expressive way.
This project takes heavy inspiration from Rust's pattern matching idiom.
matchbook at a glance
want to know more? read the docs! [matchbook at a glance](assets/readme-samples/static/10-000-feet.snippet.png)
matchbook at a slightly longer glance
want to know more? read the docs!
switching on part of an object
[enum example](assets/readme-samples/static/structure.snippet.png)
switching on an enum
[enum example](assets/readme-samples/static/enum.snippet.png)
acting on the type of an Event
Type guards [enum example](assets/readme-samples/static/type_guard.snippet.png)
matching if a value is an instanceof
a constructor
[enum example](assets/readme-samples/static/ctor.snippet.png)
*Note that all licence references and agreements mentioned in the 🔥 matchbook README section above
are relevant to that project's source code only.