Seems like you haven’t discovered Scala.Js yet: http://www.scala-js.org/
It does not have any of the shortcomings of TypeScript or Flow:
- It has algebraic data types (and semi union support for Js integration), and handles Nulls well (by use of Option->None/Some wrapping)
- It is easy to setup. Just pull a template and Sbt sets up all for you
- All OS-es are good supported
Other benefits that makes many of the categories here redundant
- Build system, packer and dependencies are all handled by the same tool, Sbt, and Webjars are used for JS dependencies
- For testing you don’t need to use a JS test library, there are many native Scala testing frameworks available, including the most popular: scalatest
- Linter: already included as the compiler!
“Types are not nearly as critical to front end development as some will have you believe“. I don’t agree on this after having writing Js and always started with a either non working, non outputting program or “null” in the console. I prefer types and “if it compiles, it works”.