Desarrollando con TypeScript 2.x

Posted by in Javascript y TypeScript

Vuelvo a las andadas con TypeScript, cómo bien sabeis, uno de mis lenguajes favoritos (Javascript es el lenguaje que más odio!), y aunque ya escribí un montón de entradas sobre lo básico (y no tan básico) de este lenguaje, incluyendo un IDE escrito expresamente en TypeScript, te mostré ejemplos de integrar jQuery, Bootstrap, e incluso te escribí una entrada completa sobre la plantilla que utilizo como base.

Ya ha pasado algo de tiempo, y también he podido ir refrescando mis conocimientos de TypeScript, y orientarlos hacia las nuevas versiones del lenguaje.

Como puedes imaginar, todas las entradas han sido fruto de mi proceso de aprendizaje, de aprender a base de solvertar pequeños ejemplos para luego aplicarlos en mis grandes desarrollos. Y no ha sido fácil, pues algunas tareas me ha costado, especialmente, RequireJS, del que también he hablado.

TypeScript 2.0

La nueva (y gran) actualización de TypeScript tuvo lugar ya hace unos meses, con importantes novedades (que pueder leer aquí desde el blog de Microsoft). Su desarrollo y evolución no es casualidad, sino que es fruto del diseño de un gan lenguaje, TypeScript, para explotar todo el potencial de Javascript de una forma ordenada. Con ordenada, me quiero referir principalmente al tipado de variables, que personalmente, es lo que me ha hecho comprender bien cómo es Javascript, escribir mejor código, y sobre todo, reportar menor número de errores.

El desafio de esta versión 2.0 es aproximarse a EMACScript, la versión de Javascript, y para ello, ha sido necesario realizar mejoras. Actualmente, Abril 2017, está en producción la versión 2.2, y preparando la 2.3, aunque sin embargo, las grandes novedades aparecen desde la versión 2.0.

El primera gran cambio es la adquisición de los ficheros de definición, principalmente desde DefinitelyTyped, desde la consola de Node con

npm install –save @types/libreria

Otro cambio de calado es el de los tipos no nulos, evitando el gran problema de Javascript con null y undefined. Ahora, los tipos simples no pueden ser null o undefined, y por tanto, las variables que admintan esos valores deberán ser declaradas como tal, usando la unión de tipos.

var variable: string | null

El último cambio notable es el de control de flujo de tipos analizados, a la hora de evaluar los tipos recibidos por las variables en los flujos.

Personalmente, el uso de let en lugar del omnipresente var a la hora de declarar variables es una mejora que deberías aplicar a tu código. Se trata de que las declaraciones con let sólo permiten como ámbito de visualización de una variable las llaves donde se encuentra.

for (let x = 0, x<5 , x++)

{ console.log(x) }

// console.log(x) da ERROR

Por último, en las clases de TypeScript, se permite asignar propiedades de sólo lectura usando readonly. Para modificar las propiedades, hay que usar los metodos set, lo que evita modificaciones de valores de la clase mediante clase.propiedad = nuevo_valor. Se hara mediante clase.set_propiedad(nuevo_valor), siendo set_propiedad una función definida en la clase. Aparentemente, es complicar la cosa, pero en la práctica es una importante mejora!

TypeScript como lenguaje

Desde que realicé el curso de TypeScript y vi las bondades del lenguaje, es uno de los 2 lenguajes en los que desarrollo (el otro, es Python, por supuesto). Me ha facilitado la vida como desarrollador, y aplicar metodología más afin a mis conocimientos, en lugar de seguir con Javascript, lenguaje que considero bastante complicado cuando los proyectos son grandes. El uso de librerias facilita la vida, pero también conlleva tiempo su aprendizaje

Y esto es todo por ahora, así que happy coding!