Seems like you haven’t discovered Scala.Js yet:
Marius Kotsbak

I actually used to work for a Scala shop. The topic of Scala.js came up quite frequently.

Yeah the type system is good, though it does not handle null the way I’d like (Languages like Elm, or even Flow, handle it better. Scala does it by convention with Options/Maybe monads, something you can do even in normal JavaScript today.).

OS issues are Flow-specific. All the other type system and languages I can think of for the web don’t share that issue (TypeScript, Elm, PureScript, Haste, etc).

“Linter: already included as the compiler!”. Err, no. Linter does a lot more than compile/type check, including things like style and convention checking. Scala has those (and very, very much need those), especially since Scala, like JavaScript, is VERY MUCH a language that requires you to abide to “the good part” to not end up with a ridiculous mess.

“Build system, packer and dependencies are all handled by the same tool, Sbt, and Webjars are used for JS dependencies”. That’s actually a big drawback, not using the same tool as what will be needed for interop with the normal ecosystem and leveraging all the optimizations in the normal JS world. That’s an issue with most compile to js languages that have their own tool chain (eg: Elm, though Elm has a very “modern web aware” tool chain, minus interop). TypeScript/Flow/PureScript/etc do not have that problem.

If I didn’t care about interop, I’d do Elm. If I didn’t care about following “mainstream” and having a large community, I’d do PureScript.

Don’t get me wrong, not saying it’s bad by any mean. I love the idea. But it doesn’t solve my problems in ways that other solutions don’t already.

TypeScript is fixed lot of problems in 1.8, and is adding proper null handling in future versions. Flow’s windows compatibility issues won’t matter with Windows 10’s summer update that let’s you run Ubuntu userland. Elm is fantastic if I don’t mind fighting with interop. PureScript covers my bases if I really want to go all out.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.