Some time ago, I answered the following question on Quora, and apparently, it became really popular. I was positively surprised by people’s reaction, and decided to repost my answer here.
What follows is the (unedited) content of my answer. Feel free to vote for it, or share a comment.
Coming from ActionScript 3 myself, in 2011, I plunged into heavy-duty JS, by writing Haxe code, which I later compiled to JS. Everything went well, until some low-level code didn’t execute the way it should. Then, hell broke loose. To find my way in the JS code spilled out by the Haxe compiler, I had to sit down and learn everything I knew about JS from scratch, up to the tiniest detail. Once I went through all that, I gradually learned to live with and love vanilla-JS.
The second concern you have to keep in mind is why those supersets and higher-level languages were created in the first place. All of them were created with the idea of making JS a little bit more pleasant to certain types of programmers. Haxe was created with the ActionScript community in mind, Dart for the Java/Go community, TypeScript for the .Net world, and CoffeeScript by Ruby programmers, for Ruby/Python programmers. Perhaps, you’d like to choose a language that fits a particular backend technology that you or your team maybe working with.