« Back
in angular javascript typescript es6 read.
Porqué pienso cambiarme a TypeScript

Porqué pienso cambiarme a TypeScript.

Sí, así es, en cuanto empiece a hacer pinitos con Angular 2, me habré cambiado por completo a TypeScript. ¿Que por qué? Déjame explicarme.

Mi pasado en C#

No sé si alguna vez he comentado en el blog que tengo un pasado en .NET, pero no fue lo primero que aprendí. Me enseñaron Java, luego C# y por último llegó JavaScript. Creo que todos hemos sufrido alguna vez las desventajas de aprender a programar en un lenguaje fuertemente tipado, es útil, por el autocompletado para dummies y esas cosas, pero realmente te apetece estampar el compilador contra la pared más cercana con casos como este:

// c#
var i = 1;  
var x = null;

Console.WriteLine(i == x);

// ERROR: Cannot assign <null> to an implicitly-typed variable

¿¿En serio?? Un sólo valor NULL en todo el lenguaje y... ¿no sabes apañártelas?

"Bueno Flavio, es porque tienes que saber qué tipo asignarle a la variable en caso de que adquiera valor en el futuro", puede que estés pensando, OK, te concedo eso por ahora.

// c#
var i = 1;  
int x = null;

Console.WriteLine(i == x);

// ERROR: Cannot convert null to 'int' because it is a non-nullable value type

Venga va, ¿y ahora qué? "No puedes asignarle valor nulo a un entero sin antes decirle al compilador que es un entero nullable". Lo siento, pero hasta ahí podíamos llegar.

Con JavaScript, llegó la maravilla:

// js
var i = 1;  
var x = null;

console.log(i == x); // false  

Por fin! ¿De verdad era taaaaaan difícil?

Llega TypeScript

Puede que pienses que añadirle tipado a JavaScript es un error por los motivos claramente expuestos arriba, pero estás equivocado: ese código es idéntico en TypeScript y funciona igual de bien.

// ts
var i: number = 1;  
var x: any = null;

console.log(i == x); // false  

Vale, entonces, ¿¿dónde está la gracia?? La gracia es que, en realidad...

TypeScript no es más que un superset de JavaScript

¿Qué implica esto? Que tú puedes seguir escribiendo código JavaScript y decidir qué cosas incorporar de TypeScript y cuál no, compilarlas como un fichero .ts y el resultado final siempre va a ser JavaScript. A gusto del consumidor.

Pero el verdadero punto fuerte es: imagina el IntelliSense (auto-completado), la refactorización automática de código en un proyecto inmenso, y otras grandes cosas a las que los lenguajes tipados nos tienen acostumbrados... pero en JavaScript, ¿no sería maravilloso?

Pues damas y caballeros... exactamente eso es TypeScript

Aparte de todo esto y por si fuera poco, TypeScript implementa de forma nativa muchas cosas del ES2015 (EcmaScript 6), el JavaScript del futuro, e incluso algunas del ES2016, que ni siquiera está cerrado. Puedes empezar ya a disfrutar de usar esas herramientas en tu día a día.

Porque, no se si te habías dado cuenta, pero los transpiladores (como Babel, Traceur, etc.) están aquí para quedarse, y para hacer más amena la espera hasta que todos los navegadores decidan implementar los nuevos estándares. Así que, ¿por qué confiar en un simple transpilador de js a js si ya tienes el de TypeScript que aparte te ofrece mucho más?

Todo esto sin hablar de Clases, Interfaces, Iteradores, Módulos y mucho más!1

Un .gif vale más que mil palabras

angular2

¿¡Qué!? ¿Aún no estás impresionado? Deberías. No en vano, grandes compañías como Google, JetBrains o Ubisoft están usando TypeScript felizmente, incluso en proyectos tan prometedores y ambiciosos como Angular 2 y NativeScript... ¿Quién iba a imaginar que Microsoft aportaría algo tan grande al mundo del open source? ;)


  1. ¿Recuerdas el último post sobre la programación asíncrona? Pues TypeScript, a partir de la versión 1.7 que, por cierto, está a punto de salir, ya lo implementa :D

comments powered by Disqus