TypeScript, superconjunto de JavaScript y sus peligros

Microsoft está cambiando mucho en éste último año. De ser la empresa más poderosa del mundo, ha pasado recientemente a la tercera entre las empresas tecnológicas, y sin duda, sus ingenieros y directivos han querido tomar cartas en el asunto y devolver el respeto de sus clientes, que poco a poco se mudan a otros softwares y SO más actuales.

Windows 8 rompe con todo lo que fue en su día Microsoft, con una interfaz IU actualizada a los tiempos que corren, y con la gran ventaja de dos SO casi semejantes para dispositivos móviles y PCs (Windows RT y Windows 8).

Pero este importante avance no es más que la punta del iceberg que la compañía está levantando, intentando ganarse la confianza de los clientes y de la comunidad de desarrolladores. IE 10 pretende estar ya en el camino correcto acordado por los estándares web (habrá que esperar para comprobarlo), el ecosistema X-Box está creciendo y ofreciendo características únicas, y por si fuera poco, la plataforma de programación de microsoft ha dado un gran paso adelante con este nuevo lenguaje, TypeScript.

TypeScript es un superconjunto de JavaScript, pensado para los tiempos modernos y la programación de aplicaciones en HTML5, y que viene a suplir una carencia del segundo, que no es otra que la de no estar adaptado a proyectos de gran envergadura. 

La propuesta viene acompañada por sus respectivas extensiones para Visual Studio, y de una gran plataforma con paquetes, tutoriales y todo lo que un desarrollador necesita para empezar a picar código.

Lo cierto es que JavaScript se nutre con buena gana de TypeScript, permitiendo trabajar con este lenguaje como si de Java se tratase, con clases, y orientado a objetos, lo que permite un mayor control de la capa funcional de la aplicación.

Pero hay un gran pero, y es del que quería hablaros.

Actualmente están floreciendo muchos superconjuntos de otros lenguajes. La idea es interesante, y suple de forma rápida carencias individuales, haciendo evolucionar la programación hacia los límites más abstractos de la computación.

Para que nos entendamos, un superconjunto de A, llamado B, es un conjunto que define todos los métodos (teoremas, atributos, funciones,..) de A, y además unos nuevos. En programación, entendemos un superconjunto de un lenguaje, como otro lenguaje totalmente compatible con el primero, pero que además ofrece nuevas funcionalidades.

El problema surge cuando el lenguaje A evoluciona, y quizás adquiera de forma interna funcionalidades que ya tenía el superconjunto B. En ese caso, al superconjunto B no le queda más remedio de:

  • O bien dejar su funcionalidad como está, existiendo duplicidad de funciones que a lo mejor hacen lo mismo.
  • O bien adaptar su funcionalidad a la nueva, requiriendo un trabajo extra, y que por lo general, acaba con problemas en la compatibilidad (el típico “compatible hasta la versión X del lenguaje A“).

Lo que ha hecho Microsoft está genial, no os lo niego. Pero ofrece una seguridad relativa, ya que solo Dios save qué evolución seguirá JavaScript, y quizás acabe solapando los intereses de TypeScript, haciendo a un superconjunto que se supone totalmente compatible una chapuza de irregularidades.

Os dejo el vídeo demostrativo de Microsoft (hace falta tener la extensión de Silverlight actualizada…):

P.D.: Pido perdón a los fanboys de Microsoft por ser tan catastrofista 🙂