Getting started with Dart is a breeze thanks to the comprehensive Darts ecosystem that provides all necessary resources in one place, including the language, package management, and build tools.
TypeScript
With TypeScript, users have access to a plethora of resources such as documentation due to its large user base.
The Angular version for both Dart and JS is derived from TypeScript.
There may be challenges when setting up an Angular + TypeScript project (refer to Angular2 questions on SO), but pre-configured seed projects are available. I personally stick to using only Dart.
For TypeScript, the Angular CLI has greatly enhanced the developer experience for Angular2 projects.
JavaScript, ES5, ES6
If you prefer pure JavaScript, it might suit your needs. Otherwise, opting for Dart or TypeScript would be advisable. Angular extensively utilizes type annotations, which require more "workarounds" in JS compared to a straightforward type annotation.
Dart
Dart stands out as a well-integrated language with a cohesive set of developer tools.
Many issues encountered within the JS/TS environment are elegantly resolved in Dart.
Since around 2016/05, Angular2 Dart has evolved into an independent project distinct from its TS and JS counterparts (as of 2016/10).
In contrast to TS, the Router module in Dart remains unchanged to support offline template compilation efficiently without needing replacement.
Similarly, NgModule
was not integrated into Dart for the same reason.
Although a new Forms module was developed for TS, it hasn't yet been adapted for Dart.
Dart has supported offline template compilation since inception but lacks compatibility with browser-platform-dynamic to compile components dynamically at runtime.
A new Dependency Injection module inspired by Dagger2 (currently under development) aims to replace the auto-generated DI system from TypeScript code in Dart.
Angular2 Dart prioritizes build output size and runtime performance but no longer offers multi-platform support like server-side rendering, to the best of my knowledge.