But you don't have proper pattern nesting, fall-through semantics and it's not clear (to me yet) how to extend to matching on multiple values. Try implementing an equality function on a sum-type using pattern matching.
Having actual proper pattern matching added to TS would be such a great addition. Especially with full support of the control flow analysis.
Pattern matching would work SO WELL in javascript, especially considering how frequently switch is currently poorly used as a replacement in things like Redux.
having real pattern matching built in to TS would be awesome. nice write up though!