Compile-to-web PLs come in three flavours (increasing difficulty of adoption):
JS-like: different syntax/semantics, existing JS tooling: Typescript, CS
Separate world: builds own toolchain: Elm, Purescript
Separate platform: includes own runtime/needs FFI: ScalaJS, Pyjamas