En esta página
¿Qué es TypeScript?
¿Qué es TypeScript?
Si llevas tiempo trabajando con JavaScript, probablemente has experimentado ese momento incómodo: despliegas a producción y un usuario reporta un error que nunca viste en desarrollo. El valor era undefined cuando debía ser un número. Un string se pasó donde se esperaba un objeto. La función recibió null y explotó en silencio. TypeScript existe precisamente para eliminar esa categoría de errores antes de que el código salga de tu máquina.
El problema que TypeScript resuelve
JavaScript es un lenguaje dinámico. Eso significa que el tipo de una variable puede cambiar en tiempo de ejecución, que las funciones no declaran qué tipos aceptan ni qué devuelven, y que el intérprete descubre los errores de tipo cuando ya es demasiado tarde: en producción, frente a usuarios reales.
Imagina un sistema de facturación. Una función calcularTotal(items) espera recibir un arreglo de objetos con propiedades precio y cantidad. Nada en JavaScript te impide llamarla con un string, con null, o con un arreglo de objetos que tienen price y qty en inglés. El error aparecerá en tiempo de ejecución, y dependiendo del contexto, podría generar facturas incorrectas o simplemente mostrar NaN al cliente.
TypeScript resuelve esto añadiendo un sistema de tipos estático encima de JavaScript. No cambia cómo JavaScript funciona; añade una capa de verificación que ocurre antes de que el código se ejecute.
¿Qué es TypeScript exactamente?
TypeScript es un superconjunto tipado de JavaScript desarrollado por Microsoft. "Superconjunto" significa que todo JavaScript válido es TypeScript válido. Puedes tomar cualquier archivo .js, renombrarlo a .ts, y TypeScript lo aceptará (aunque quizás con algunas advertencias en modo estricto).
Sobre esa base JavaScript, TypeScript añade:
- Anotaciones de tipos: puedes declarar explícitamente qué tipo tiene cada variable, parámetro y valor de retorno.
- Interfaces y tipos: estructuras para describir la forma de los objetos.
- Genéricos: componentes reutilizables que funcionan con múltiples tipos de forma segura.
- Enumeraciones: conjuntos nombrados de constantes.
- Decoradores: metaprogramación para clases y métodos (ya estandarizados en ECMAScript).
- Inferencia de tipos: en muchos casos TypeScript deduce el tipo sin que lo declares explícitamente.
Cómo funciona el compilador
TypeScript no se ejecuta directamente en el navegador ni en Node.js. El compilador tsc transforma el código TypeScript a JavaScript puro. Este proceso tiene dos etapas:
1. Verificación de tipos (type checking): El compilador analiza el código, resuelve todos los tipos, y reporta cualquier inconsistencia como error. Esta etapa no produce ningún archivo; solo detecta problemas.
2. Transpilación: El compilador elimina todas las anotaciones de tipos (que son pura sintaxis TypeScript) y produce archivos JavaScript que el navegador o Node.js pueden ejecutar.
// Entrada: archivo TypeScript
const saludar = (nombre: string): string => {
return `Hola, ${nombre}`;
};
// Salida: archivo JavaScript (las anotaciones desaparecen)
const saludar = (nombre) => {
return `Hola, ${nombre}`;
};Es importante entender que los tipos de TypeScript no existen en tiempo de ejecución. Son información para el compilador y para tu editor de código. Cuando el código llega al navegador, ya es JavaScript puro.
TypeScript vs JavaScript: la comparación honesta
No se trata de que uno sea mejor que el otro en términos absolutos. Se trata de qué necesita tu proyecto.
JavaScript es ideal para scripts rápidos, prototipos pequeños, o proyectos donde la velocidad de iteración prima sobre la corrección garantizada.
TypeScript brilla en proyectos medianos a grandes, en equipos con múltiples desarrolladores, en código que debe mantenerse durante años, y en cualquier situación donde un bug de tipo en producción tenga consecuencias serias (comercio electrónico, salud, finanzas).
Las ventajas concretas de TypeScript incluyen:
- Autocompletado inteligente: tu editor sabe exactamente qué propiedades y métodos tiene cada objeto.
- Refactoring seguro: si renombras una propiedad, TypeScript marca todos los lugares que deben actualizarse.
- Documentación viva: las firmas de las funciones documentan qué aceptan y qué devuelven.
- Detección temprana de errores: los bugs de tipo se detectan mientras escribes, no cuando el cliente llama.
- Navegación de código: "ir a definición" y "encontrar todas las referencias" funcionan perfectamente.
El costo principal es la curva de aprendizaje inicial y algo de ceremonia adicional al escribir código. En proyectos reales, ese costo se recupera rápidamente.
TypeScript 6.0: novedades clave
TypeScript 6.0 trae varias mejoras sobre las que profundizaremos a lo largo del curso:
Soporte mejorado para decoradores estándar: con los decoradores ECMAScript ya estandarizados, TypeScript 6.0 refina su implementación para alinearse completamente con la especificación. Esto es especialmente relevante para quienes trabajen con Angular o NestJS.
Inferencia de tipos más precisa en genéricos: el compilador es capaz de inferir tipos en situaciones que antes requerían anotaciones explícitas, especialmente en cadenas de métodos y callbacks anidados.
satisfies operator mejorado: el operador satisfies (introducido en TS 4.9) recibe refinamientos que lo hacen más útil para validar implementaciones contra interfaces sin perder la inferencia del tipo concreto.
Mejor soporte para módulos ESM: la resolución de módulos en proyectos que usan ES Modules nativos es más robusta, con menos casos extremos y mejor integración con bundlers modernos.
TypeScript 7.0: el futuro en Go
En paralelo al desarrollo normal, el equipo de TypeScript trabaja en algo histórico: una reescritura del compilador en Go. El proyecto, actualmente en preview bajo el nombre interno "tsc-go", promete:
- Compilaciones 10x más rápidas: gracias a la ejecución nativa de Go vs JavaScript.
- Menor uso de memoria: proyectos grandes que hoy consumen 4 GB podrán compilarse con mucho menos.
- Language server más veloz: el servidor de lenguaje (que alimenta el autocompletado en VS Code) será significativamente más rápido.
La compatibilidad con TypeScript 6.0 está garantizada: si tu código compila con TS 6.0, compilará con TS 7.0. No es una ruptura de API; es una reescritura de implementación.
El ecosistema TypeScript
TypeScript no es solo el compilador. Es todo un ecosistema:
Tipos para librerías JavaScript: el repositorio DefinitelyTyped (@types/*) contiene tipos para miles de librerías JavaScript que no incluyen tipos propios. Instalar @types/node o @types/lodash le da a TypeScript toda la información que necesita sobre esas APIs.
Language server (tsserver): el proceso que alimenta el autocompletado, los errores en tiempo real y la navegación de código en VS Code, WebStorm, Neovim y cualquier editor que soporte el Language Server Protocol.
Bundlers y herramientas: Vite, esbuild, webpack, Bun y la mayoría de las herramientas modernas soportan TypeScript nativamente o con plugins mínimos.
Frameworks: Angular usa TypeScript como lenguaje principal. React, Vue, Svelte y prácticamente todos los frameworks modernos tienen soporte de primera clase. NestJS (backend) es TypeScript nativo.
El Playground: tu laboratorio
Antes de instalar nada, te recomiendo explorar el TypeScript Playground en typescriptlang.org/play. Es un editor online donde puedes:
- Escribir TypeScript y ver el JavaScript generado en tiempo real.
- Ver todos los errores de tipo con sus mensajes.
- Ajustar opciones del compilador (strict, target, module).
- Compartir código con URLs.
- Acceder a ejemplos curados del equipo de TypeScript.
Es la herramienta perfecta para experimentar con conceptos nuevos sin necesidad de crear un proyecto completo. A lo largo de este curso, muchos ejemplos se pueden pegar directamente en el Playground.
¿Listo para configurar tu entorno?
Ahora que entiendes qué es TypeScript, por qué existe y cómo funciona a alto nivel, es hora de configurar un proyecto real. En la siguiente lección veremos cómo instalar TypeScript, crear y configurar el archivo tsconfig.json, y ejecutar el compilador desde la línea de comandos.
Inicia sesión para guardar tu progreso