If you want something functional that compiles to JavaScript you can for f# use Fabel [0] and there is a ocaml-like language called reasonML [1] that also does it.
Reason{ML,} is just a new syntax for OCaml, still perfectly round trip translatable I believe (though that's something I expect to diverge over the years). You can use js_of_ocaml or BuckleScript to translate either OCaml or ReasonML written code to JavaScript.
[0]: https://fable.io/ [1]: https://reasonml.github.io/