Con el lanzamiento de AngularJS 2, la documentación sugiere tres lenguajes: Typescript , Javascript y Dart .
Solo estoy acostumbrado a Javascript EcmaScript 5 y me pregunto cuáles son las fortalezas y debilidades de estos tres.
En el momento en que se hace esta pregunta, la documentación está más desarrollada en Typescript y bastante escasa en los demás (incluso en su propio lenguaje Dart):
¿Debo cambiar mi hábito de desarrollar usando Javascript y seguir lo que sugiere Angular 2 usando Typescript? ¿Realmente cambia los conceptos de Javascript?
Sitio web oficial de AngularJS 2.0
Dart facilita el inicio porque todo lo que necesita lo proporciona el ecosistema de Darts de una mano (lenguaje, administración de paquetes, compilación, ...).
Mecanografiado
Para TS hay la mayoría de los recursos disponibles (documentación, ...) porque hay una gran base de usuarios.
La versión Dart y JS de Angular se genera a partir de TS.
Parece que hay muchos problemas para poner en marcha un proyecto Angular+TS (consulte las preguntas de Angular2 aquí en SO), pero hay proyectos iniciales disponibles en los que todo ya está configurado. No sé los detalles porque solo estoy usando Dart.
Para TS ahora hay Angular CLI que mejora mucho la experiencia del desarrollador para Angular2 con TypeScript.
Javascript, ES5, ES6
Si eres un purista de JS, podría ser el lenguaje adecuado para ti. Si no (si lo fuera, probablemente no haría esta pregunta), entonces estoy bastante seguro de que es mejor que use Dart o TS. Angular hace uso de las anotaciones de tipo de varias maneras. Con JS, se necesitan "soluciones alternativas", donde, de lo contrario, una anotación de tipo simple es suficiente (principalmente inyección de dependencia).
Dardo
Dart es un buen lenguaje con un conjunto de herramientas que funcionan bien juntas. Muchos de los problemas que causa el entorno JS/TS se resuelven elegantemente para Dart.
Desde aproximadamente 2016/05, Angular2 Dart es un proyecto independiente y difiere bastante de las versiones TS y JS (a partir de 2016/10).
El módulo de enrutador que se reemplazó en TS varias veces para que funcionara con la compilación de plantillas fuera de línea, no se reemplazó en Dart porque la carga diferida de Dart también funciona bien con el enrutador "antiguo".
... y también NgModule no se presentó a Dart por la misma razón.
El nuevo módulo Forms creado para TS no se transfirió (todavía) a Dart.
Dart tenía una compilación de plantillas fuera de línea desde el principio, pero no es compatible con la plataforma dinámica del navegador para compilar componentes en tiempo de ejecución.
Parece que se está trabajando en un nuevo módulo de inyección de dependencia para Dart basado en Dagger2 (actualmente aún no disponible) para reemplazar el sistema DI que se generó automáticamente a partir del código TypeScript.
Angular2 Dart tiene un fuerte enfoque en el tamaño de salida de compilación y el rendimiento del tiempo de ejecución, pero AFAIK se eliminó la compatibilidad con múltiples plataformas (como la representación del lado del servidor).