My experience with compile-to-js languages include: GWT, Dart and TypeScript.
GWT was very good at calling JS libraries. Almost zero friction. But not so, in the other direction. Creating API's to be consumed by JS was so ugly that I can confidently say that it was not worth it. Unless you are creating an API that has a very small surface area to functionality ration (like maybe a spell checker).
Dart has a similar story to GWT.
By far the best inter-op story is TypeScript. If you write a lib in TypeScript it can be consumed by JS as-is. No special anything is needed.
So my question is, where does Elm fall in this spectrum. Is it advisable to create an api in Elm to be consumed by JS developers?