[disclaimer: I'm on the Dart team]
[disclaimer: I'm on the Dart team]
Whether you like JS or don't, I think we can all agree that it stinks to have only one choice for client-side scripting.
Sorry, using the present tense for things that will be in browsers years later (hopefully) is a common practice that's an issue with me. Let's stick with what people can actually use today.
Also, pointing to features people can use in different dialects of JavaScript is not really fair. Just about everything you can think of has been experimented with and probably deployed somewhere. It doesn't count unless it's all available in the same toolchain and can be used in a unified way while writing a single app.
If that's the metric we're applying, Dart fares no better...
All via dart2js
OTOH: JS has the largest module system of any programming language ever, which also tends to make it pretty productive.
ES7 async/wait is available now via the ES7 polyfill Babel.js: http://babeljs.io/
There are a ton of polyfills available right now for ES6/ES7 features: http://kangax.github.io/compat-table/es7/
BTW I also think that the current state of aggressive polyfills is also influenced by Dart's compile to JS functionality. :)
What are optical types? I've never heard of this term and Google turned up nothing on it.