TypeScript: cómo convertir a JavaScript en casta

Durante muchos años, existe una tendencia ascendente de desarrolladores que odian JavaScript por encima de todas las cosas posibles. Como todo, muchos de estos desarrolladores se quejan por motivos coherentes y muchos otros, simplemente lo hacen por continuar con esa tendencia.

Es paradójico que a la vez que exista esta fuerte vertiente ‘antiJavaScript‘, cada día existan más posibilidades de trabajar con JavaScript y que el abanico de posibilidades en los que podemos usarlo crezca por momentos. De hecho, suele ser bastante curioso que, por lo general, si algo se pueda hacer en JavaScript, la comunidad saque al mercado dos herramientas, frameworks o librerías diferentes para hacer exactamente lo mismo.

Los que se quejan y odian JavaScript con motivos y argumentos en muchos ocasiones suelen tener razón. Incluso los programadores que mejor conocen el lenguaje y que mejor saben usarlo, también son conscientes de estos fallos de diseño con los que cuenta el lenguaje. Por la red circula esta imagen bastante gráfica de lo que quiero decir:

javascript-the-good-parts-the-definitive-guide

A la derecha tenemos el manual para aprender todo lo relativo con JavaScript y la izquierda está el libro escrito por Douglas Crockford, llamado ‘The Good Parts’. Este libro nos comenta las buenas partes con las que cuenta el lenguaje y en las que debemos basarnos para sacar buen jugo de nuestro código. Es curiosa la diferencia de tamaños 🙂

Esta bastante claro, bromas a parte, que JavaScript sufre algunos males, por lo general, como cualquier lenguaje de programación. Solo que JavaScript, al ser usado por tantos tipos diferentes de desarrolladores, se hace más propenso a esta serie de bromas y odios. La polémica siempre estará servida.

TypeScript y la POO como ayuda

Los problemas que suele tener JavaScript son el uso de tipos dinámicos, el ser un lenguaje de programación orientado a prototipos o el problema de entender los ámbitos y contextos en los que pueden encontrarse nuestras variables. Sin duda, estos problemas suelen ser provocados por desconocimiento del lenguaje o por querer hacer algo de JavaScript de lo que no es, es decir querer a hacer un lenguaje muy tipado y estricto. Lo que en mi opinión esta gente quiere hacer, es convertir a JavaScript en un lenguaje de la casta y hacer que conviva con los lenguajes del régimen como puedan ser C# y JavaScript 🙂

Sin embargo, como con JavaScript no se va a acabar tan fácilmente, ya que todos los navegadores, todas las nuevas herramientas de nodeJS que están naciendo o incluso muchas de las aplicaciones móviles multiplataforma que se desarrollan, hacen uso de él como lenguaje de programación, el sector ha empezado a insertar alternativas por medio de metalenguajes que ayuden a preprocesar el JavaScript con una sintaxis más familiar a lo que pueda ser un lenguaje más orientado a objetos y clases. Algunas de las alternativas pueden ser CoffeeScript o TypeScript. En el articulo nos centraremos en TypeScript.

TypeScript es un lenguaje de programación Open Source (el código podemos verlo aquí) creado por Microsoft, que nos permite crear código JavaScript a partir de una sintaxis nueva dirigida al mundo POO. El lenguaje nos va a permitir crear, clases, interfaces, métodos, definir tipos y estructurar en módulos entre otras muchas más cosas y harán sentirnos como si nos encontrásemos en los mundos de C# o Java.

Como venimos diciendo, esto les dará mayor seguridad a los desarrolladores que estén acostumbrados a lenguajes muy tipados y rígidos que necesiten tener un código más legible. El código que escribimos es reescrito por el compilador a lenguaje JavaScript y convertirá toda esta ‘Sugar Syntax’ a objetos prototipados y simulará la protección de métodos y variables por medio de clousures. En definitiva, nada que la comunidad JavaScript no esté haciendo ya sin la necesidad de una capa de abstracción más.

Para que veamos un poco lo que quiero decir, he creado una clase en TypeScript con la herramienta que nos ofrece Microsoft para aprender el lenguaje en su propia página web. El código muestra una clase Estudiante con dos métodos:  uno para mostrar su nombre y otro para mostrar la nota media final del alumno. El código es el siguiente:

Este código será convertido en JavaScript (recordemos que lo que entenderán nuestros navegadores será el código JavaScript) es el siguiente:

Aunque es una clase bastante simple, el código que genera es totalmente diferente al escrito en TypeScript. Si analizamos un poco el código encontramos estos detalles:

  • Para modularizar el código, usa el patrón Módulo típico en JavaScript.
  • Dentro de este módulo crea una clase con el constructor Estudiante de tipo función y dentro sus variables con la palabra reservada  ‘this’ para indicar que son variables internas de su contexto.
  • Sus métodos los generando prototipos de la clase.
  • Por ultimo, inserta dentro del modulo la clase para que pueda ser accedida e instanciada por el resto de programas.

Como vemos, han desaparecido todos los tipos declarados y toda la sintaxis que tiene que ver con la POO. Toda esta sintaxis de TypeScript, solo va a servir para que los editores nos corrijan fallos de tipado en tiemplo de escritura y para evitarnos compilar el código mal.

Conclusión

TypeScript va a ser una herramienta que va a dar mucho juego debido a lo que puede proporcionarnos en cuanto a estructuración y legibilidad. Puede que obtengamos código más limpio y que los editores nos hagan trabajar más rápido al detectar mayor número de errores en tiempo de compilación y no tantos en tiempo de ejecución como pueda pasar ahora. Todo aquel ninja del JavaScript no supondrá ninguna revolución, simplemente se convertirá en una herramienta más.

A lo largo de este año empezaremos a oír mucho sobre TypeScript pues el equipo encargado de desarrollar AngularJS 2 lo ha tomado como lenguaje para programar su framework. Esta fama y la forma en que van a encarar el desarrollo, hará que muchos desarrolladores opten por esta combinación para realizar aplicaciones. Queda decir que su uso no será obligatorio y que AngularJS 2 no estará ligado al de TypeScript. Esta simbiosis entre Google y Microsoft veremos si da sus frutos y si la comunidad adopta el lenguaje como un estándar.

Nos leemos 🙂

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s