¿Qué es TypeScript? Es un superconjunto sintáctico de JavaScript que agrega un toque de orden al introducir el tipado estático.
¿Qué quiere decir esto? Pues imaginemos que JavaScript es como un lienzo en blanco donde podemos dibujar cualquier cosa en cualquier momento, mientras que TypeScript es como un lienzo que, aunque aún nos da libertad creativa, nos ofrece una guía visual para ayudarnos a mantener la coherencia y prevenir errores.
Por ejemplo, si tenemos una variable llamada edad
y la definimos como un número en TypeScript, este se asegurará de que siempre sea tratada como un número en nuestro código.
Pero está bien, paremos aquí un momento y vamos a ver de dónde surge la necesidad de inventar algo como TypeScript.
En 1995, Brendan Eich, creo JavaScript. Cuando JavaScript se lanzó, su propósito original era proporcionar funcionalidad a la web mediante pequeños scripts entregados al navegador, complementando las capacidades de HTML y CSS. Con el tiempo, su flexibilidad y capacidad para ejecutarse directamente en los navegadores lo hicieron muy popular.
Desde su lanzamiento, ha experimentado numerosas revisiones y actualizaciones, principalmente a través de las especificaciones de ECMAScript, el estándar en el que se basa JavaScript, para abordar problemas y agregar nuevas funcionalidades. La adopción de JavaScript ha superado las expectativas iniciales, convirtiéndose en uno de los lenguajes de programación más utilizados y esenciales para el desarrollo web. A lo largo del tiempo, las actualizaciones de ECMAScript han mejorado la calidad del lenguaje, abordando problemas y proporcionando a los desarrolladores herramientas más potentes para crear aplicaciones web de todo tipo. Estas mejoras no solo se limitan a la funcionalidad, sino que también han impactado positivamente en la legibilidad del código. La introducción de «syntactic sugar» ha facilitado y optimizado la escritura de código, mejorando la eficiencia y la experiencia general del desarrollador.
Sin embargo, en la actualidad, JavaScript ya no es solo el código embebido en el navegador o esos pequeños scripts; se ha convertido en un lenguaje enormemente popular. No solo opera en el lado del cliente, sino también en el servidor gracias a Node.js. Se construyen aplicaciones enormes y complejas, desarrolladas completamente en JavaScript. No obstante, esto presenta un desafío: editar ese código puede convertirse en una odisea. Es posible que algo deje de funcionar, pero no sepas por qué, y es que tal vez estás pasando un string cuando se espera un number o un array; el código se rompe, y tú no entiendes nada. Este tipo de aplicaciones se vuelven difíciles de mantener.
Además, a día de hoy, JavaScript conserva problemas que pueden volver locos a algunos desarrolladores, sobre todo aquellos que provienen de otros lenguajes de programación más estrictos. Problemas o curiosidades como:
0 == ‘0’ //true
0 == [] // true
‘0’ == [] // false
if (1
Y otras cosas como permitir acceder a propiedades que no existen:
const obj = { width: 10, height: 15 };
const area = obj.width * obj.heigth;
// height está mal escrito y no causa errores
// a veces se puede perder mucho tiempo con este tipo de errores
Algunos de estos inconvenientes, que podrían parecer insignificantes en aplicaciones más pequeñas, pueden convertirse en fuentes de errores difíciles de identificar a medida que el proyecto escala en tamaño.
Su propósito es abordar estos problemas, transformando JavaScript, un lenguaje de tipado dinámico, en un lenguaje de tipado estático. Volviendo así JavaScript en un lenguaje más eficiente y ayudando a encontrar los errores antes.
Es aquí donde TypeScript, un lenguaje de programación de código abierto creado por Anders Hejlsberg y respaldado y mantenido por Microsoft, aparece como solución a este tipo de problemas.
En JavaScript, el tipo de las variables se asigna durante la ejecución, basándose en su valor en ese momento. En TypeScript, por otro lado, los tipos deben definirse en la declaración de variables, objetos y funciones. Hasta que los tipos no estén claros, TypeScript no permitirá la ejecución del código. Aunque no siempre es necesario definirlos de forma explícita, TypeScript también puede inferir los tipos. Esto significa que puede deducirlos si una variable es definida como:
let objetosCarrito = 5;
// tendrá tipo Number Pero esto dará error si luego hacemos esto: typescript
objetosCarrito = 'vacio';
// Error
Esto implica que si tomamos código de JavaScript que ya funcionaba y lo ejecutamos como TypeScript, no generará errores (por lo menos no sintácticos). En términos de funcionalidad, el código seguirá funcionando exactamente igual, pero será crucial declarar los tipos.
Otra característica es que TypeScript ofrece la posibilidad de transpilar el código a JavaScript con errores de tipo (siempre y cuando activemos esa opción desde el archivo de configuración, tsconfig.json), lo que permite una adaptación progresiva del código de una aplicación mientras esta sigue funcionando. Es importante destacar que TypeScript nunca altera el comportamiento en tiempo de ejecución del código; siempre se comporta como JavaScript.
Entonces, ¿deberíamos aprender JavaScript o TypeScript? La pregunta no es del todo correcta, ya que para aprender TypeScript es necesario tener conocimientos previos de JavaScript. TypeScript se presenta como una versión "mejorada" de este último. Además, la comunidad de JavaScript sigue siendo considerablemente más grande, como lo demuestra el hecho de que en Stack Overflow hay diez veces más preguntas etiquetadas con JavaScript que con TypeScript.
Entonces, comenzar directamente con TypeScript puede ser tentador por las ventajas que ofrece, pero la realidad es que una base sólida de JavaScript es esencial. Muchas de las preguntas y conceptos fundamentales de programación se aplican de manera similar en ambos casos. Por ejemplo, si nos preguntas cómo iterar sobre arrays, la respuesta será prácticamente la misma en TypeScript que en JavaScript.
En resumen, TypeScript es muy útil cuando ya tengamos un control avanzado con JavaScript y los desarrollos se vuelven más complejos y el mantenimiento engorroso. No tengamos prisa por ir aprendiendo cosas nuevas sin tener las bases claras, la propia necesidad al ir generando más y más código hará que queramos recurrir a herramientas como TypeScript y otras, y por supuesto es más útil aún que tengamos las bases sobre desarrollo web claras para poder sacar partido a estos lenguajes.
En este artículo, aprenderás qué es el Lazy Loading y cómo implementarlo fácilmente en tu… Leer más
En esta guía práctica, te explicamos qué es el presupuesto de rastreo, por qué es… Leer más
¿Alguna vez te has encontrado con un mensaje que te invita a actuar, ya sea… Leer más
Una de las preguntas más comunes entre los desarrolladores web que comienzan a usar JavaScript… Leer más
Descubre qué es y para qué sirve la preimpresión digital para conseguir una buena impresión… Leer más
Ampliamos información para las redes sociales. Descubre cómo gestionar correctamente los consentimientos necesarios en las… Leer más