Your first reason is the most compelling and what JavaScript developers might want to consider. My own experience is that I am much more productive writing code in Dart and then converting it to JavaScript. Why?
* Autocompletion (intellisense)
* Refactoring
* Use types and catch errors before runtime. Types are optional, although I don't know why you wouldn't use them unless you are pasting in some JavaScript code and running it as Dart. Hand converting JavaScript to Dart is fairly easy because types are optional.
* Quick turn around time in the "change code, set breakpoint, run code, stop at break point" cycle.
* Calling native JS code is painless. Libraries that are currently not available as Dart, such as three.js can still be used.
* Project organization is fairly automatic.
* Code analyzer - this one is my favorite. The analyzer will tell me if my change causes a problem in another file. It runs in the background, like C# does.
* Autocompletion (intellisense)
* Refactoring
* Use types and catch errors before runtime. Types are optional, although I don't know why you wouldn't use them unless you are pasting in some JavaScript code and running it as Dart. Hand converting JavaScript to Dart is fairly easy because types are optional.
* Quick turn around time in the "change code, set breakpoint, run code, stop at break point" cycle.
* Calling native JS code is painless. Libraries that are currently not available as Dart, such as three.js can still be used.
* Project organization is fairly automatic.
* Code analyzer - this one is my favorite. The analyzer will tell me if my change causes a problem in another file. It runs in the background, like C# does.