TypeScript does support tagged unions, actually: https://www.typescriptlang.org/docs/handbook/advanced-types....
As does Flow: https://flow.org/blog/2015/07/03/Disjoint-Unions/
As does Flow: https://flow.org/blog/2015/07/03/Disjoint-Unions/
https://gist.github.com/frankpf/cde7f792580f731dfe886ed2d91b... (see the second file for usage)
Definitely a fair point that it is a few more keystrokes, though.