Este libro se puede utilizar como texto de aprendizaje sobre el lenguaje de programación TypeScript. A su vez sirve como iniciación para aquellas personas interesadas en la programación en general y en el paradigma orientado a objetos en particular. Hace un repaso explicativo sobre las características más importantes de este tipo de lenguajes.

Son recomendables conocimientos de HTML spara entender ciertos temas que cubren funcionalidades aplicables a la interfaz gráfica. Por otro lado, a los que posean experiencia en el desarrollo con JavaScript les resultará más fácil la compresión de lo que este libro intenta explicar.

 JavaScript

Historia

JavaScript Javascript (a partir de ahora JS) es un lenguaje de programación orientado a objetos mediante prototipos, interpretado, imperativo y funcional. Fue desarrollado por Brendan Eich, un trabajador de la antigua Netscape. En un principio se denominó LiveScript y se lanzó junto al navegador Netscape Navigator 2.0 en 1995. Posteriormente el nombre cambió a JavaScript por cuestiones de marketing.

Debido al éxito que obtuvo, Microsoft decidió desarrollar el suyo propio al que llamó JScript que en realidad era el mismo lenguaje pero con otro nombre para evitar problemas legales.

En 1997 la ECMA (European Computer Manufacturers Association) desarrolló el primer borrador para estandarizar el lenguaje. Es lo que hoy conocemos como ECMAScript.

Para más información: http://es.wikipedia.org/wiki/JavaScript

 Ámbito de ejecución

JavaScript se ejecuta en el cliente. Esto quiere decir que la responsabilidad de su funcionamiento recae sobre nuestra máquina en contraposición a los lenguajes de servidor (PHP, Python, etc). Hoy en día JS también puede ser ejecutado en el lado del servidor gracias a Node.js.

Normalmente ejecutaremos JS en un navegador web los cuales son capaces de interpretar el código.

Compatibilidad con navegadores

Desgraciadamente para los desarrolladores y usuarios no todos los navegadores interpretan JS de la misma forma. Aunque se han hecho importantes progresos en los últimos tiempos, siguen quedando restos de lo que se ha demostrado ser una chapuza. Navegadores como IE8 y anteriores no son compatibles con todas las características del estándar y otras las han adaptado. Es importante que todo nuestro código sea ejecutable en la mayoría de navegadores para tener la mayor cantidad de usuarios potenciales disponibles.

TypeScript

TypeScript (a partir de ahora TS) es un lenguaje de programación de código abierto desarrollado por Microsoft.

La primera versión se liberó en 2012 y a fecha de la edición del libro la última es la 1.1.0.1.

Su estándar es el ECMAScript como lo es también de y ActionScript (a partir de ahora AS). TS es un superconjunto de JS que le proporciona una capa de orientación a objetos. Por ello no existe ningún navegador que ejecute TS de forma nativa sino que todo el código es traducido a JS.

Entre sus mejores características está la compatibilidad con todo el código JS existente. Podemos usar librerías como jQuery sin problemas pues TS es JS.

¿Por qué TypeSript?

JS se diseñó para ser un lenguaje con el que desarrollar pequeñas funcionalidades en la web. Con el paso del tiempo y la llegada de las aplicaciones ricas en Internet (RIA) su uso no sólo se ha extendido, sino que el propio lenguaje se ha visto superado por las circunstancias. Los proyectos son cada vez más complejos y necesitan mejores funcionalidades. No es un lenguaje pensado para grandes aplicaciones por lo que la dificultad para desarrollarlas ha ido en aumento, siendo un verdadero quebradero de cabeza por sus particularidades como su singular orientación a objetos mediante prototipos. Por otro lado no es posible hacer borrón y cuenta nueva y dejar de darle soporte porque está tan arraigado al mundo web que prácticamente el 99% de las webs actuales no funcionarían, lo que obligaría a hacer nuevos desarrollos. Ante esta tesitura y la cada vez más fuerte presión de la comunidad, se intentaron hacer cambios para, de cierta manera, mitigar estos problemas que ha venido arrastrando. Alternativas como CoffeScript o LiveScript surgieron para este propósito aunque con un éxito moderado. Microsoft ha decidido dar un paso al frente y lanzar su propia adaptación, que introduce cambios significativos como el tipado estático, clases, interfaces, etc, con una sintaxis similar a Java.

Qué es y no es TypeScript

TS no es nada por sí mismo, puesto que su código no se compila ni se interpreta, sino que se traduce a JS. Una vez traducido, estaríamos ante código JS nativo interpretable por cualquier software que lo permita, como un navegador web.

TS es JS

Hay ciertas características de TS que son traducibles a JS de una forma más o menos análoga, como las clases. Hay otras, en cambio, que no, como las interfaces, las cuales no generan código alguno, es decir, sólo existen para comprobaciones en tiempo de compilación.

TS usa características de ECMAScript 3, 5 y 6. Algunas de ellas las traduce de forma nativa a JS, como los getters y setters implícitos de la ECMAScript 5, y con otras no usa las características nativas de JS, como los módulos de la ECMAScript 6. La ECMAScript 6 describe el uso de módulos como una característica nueva de JS con una sintaxis determinada. Con TS también se pueden usar módulos, pero si lo hacemos podemos observar que no traduce el código a la sintaxis del estándar, sino que ni siquiera hace una traducción. Eso es así para poder usar lo nuevo de la ECMAScript 6 en navegadores no compatibles. Pero no todas están presentes en TS. A su vez posee características propias no determinadas en ECMAScript (por el momento) como los genéricos.

No todos los navegadores webs con compatibles con todas las funcionalidades de todos los estándares de ECMAScript, por lo que hay que tener cuidado a la hora escribir nuestro código TS, pues el uso de ciertas características lo haría inejecutable en algunos navegadores.

Aquí podemos ver una lista de ECMAScript 5 y 6 y su compatibilidad.

Cada archivo .ts se compila en su homólogo .js, incluyendo en él todo el código traducido de TS a JS. Lo que normalmente conviene hacer es unificar todo el código JS resultante en un solo archivo .js que posteriormente distribuiremos. Además, también se crean de forma automática archivos .maps que relacionan los .ts con los .js. Estos son muy útiles para la depuración del código TS.

Realmente TS no se compila ni se interpreta, sino que se traduce. A lo largo del libro se usarán los términos relativos a la compilación para referirse al proceso de traducción de TS a JS. Si bien no es el uso correcto sí que es el más amigable para la mayoría de los programadores. Microsoft ha catalogado su herramienta como un “transpiler” (translator + compiler) que en español podría acuñarse como trapilador (traductor + compilador).

Fuente: José Carlos Lama Ponce, Creative Commons