There are many viable compile-to-js languages out there to pick from:
* clojurescript
* f# via fable
* c# via different means(even an MSIL compiler)
* Golang
* etc
I mean, clojurescript and F# are bomber if you want functional. Typescript may give the best interop with existing packages, but I've read good things about F#'s .d.ts file support for creating type providers. In any case, if the lang you pick creates a bit of extra work that's probably small beans compared to the work required to get all of what parent described with completely separate languages and platforms.