Como siempre las charlas después de las charlas suelen ser lo más interesante. Os dejo una reflexión sobre las conclusiones extraídas después de que Rodri nos haya acercado esta tarde al lenguaje TypeScript como firme candidato a sustituir a JavaScript en el marco de las soluciones basadas en el framework Angular 2.0
Tras la charla nos hemos quedado discutiendo en la calle el ponente y yo acerca de cuales son las ventajas que presenta TypeScript con respecto a JavaScript. Mi argumento es que más allá de la tipificación fuerte no se presentan grandes diferencias que justifiquen actualmente la creación de un nuevo lenguaje ya que el resto de características que proporciona el lenguaje es azúcar sintáctico compartido con ES6.
Ni siquiera de hecho la tipificación fuerte que ofrece el lenguaje a mi juicio es un verdadero valor pragmático hoy por hoy si se tiene en cuenta el tipo proyectos de desarrollo front a los que esta vinculado typeScript en general y Angular 2 como framework en particular. Cada vez más los proyectos exigen procesos de desarrollo ágil aunque sea a costa de perder en robustez y tolerancia a fallos. En general un proyecto en TypeScript nos acerca mas al stream clásico de la orientación a objetos con arquitecturas pesadas en las que ha dominado Java como lenguaje de programación abanderado mientras que JavaScript es la respuesta para toda esa comunidad que ha advertido la tendencia a abandonar los esquemas de desarrollo pesados y robustos en favor de aproximaciones dirigidas a crear soluciones ágiles y ligeras que se acomodan mejor a los escasos tiempos asignados a los proyectos software de hoy en día.
Tras un largo debate, opino que montar un sistema de tipos fuerte como el que proporciona TypeScript solo para mejorar la corrección en tiempo de compilación y proporcionar asistentes de edición en línea no es algo en absoluto justificado ya que las capacidades que al respecto ofrece JavaScript no quedan tan lejos de esto. Por otro buscar la robustez en el desarrollo es algo que quizá tenga sentido más en lenguajes de back (como siempre lo fue Java) y no en solución de front donde prima la agilidad y el rendimiento (caso de JavaScript, NodeJS aparte).
La justificación que puede encontrarse a la decisión tomada por Google de basar el desarrollo de Angular 2 en TypeScript tal vez sea que se pretende aproximar a este framework a toda la comunidad de desarrolladores noveles con unos conocimientos centrados en la sintaxis de los lenguajes de la orientación a objetos como Java o C# haciendo que la curva de aprendizaje sea más sencilla comparada con la que supone el lenguaje JavaScript lo que como digo facilitaría el trasvase de comunidades.
En cualquier caso, es mi opinión personal que tanto TypeScript como Angular tienen un futuro bastante aciago. Con respecto a Angular, y desde una posición más controvertida, se puede afirmar que son hechos incontestables que 1) Angular esta recibiendo menos soporte corporativo que otras tecnologías como Web Components 2) que tiene fuertes competidores como Polymer o React JS y que 3) se ha pegado voluntariamente un tiro en el pie al violar la compatibilidad descendente. En relación a TypeScript todo parece indicar que tiene los días contados ya que, aquellos valores que realmente se consideren de verdadero interés para la comunidad de desarrollo serán, tarde o temprano absorbidos por el estandar y el resto no se incluirán o se perderán en las "bad parts" que nuestro querido JS está condenado a tener siempre. Este argumento es, a mi juicio, aplicable a todos los lenguajes de transpilación que se han puesto de moda (Dart, CoffeeScript, TypeScript...). En cualquier caso en esto sólo el tiempo, y la propia comunidad de desarrolladores, nos dirá quien es el caballo ganador.