TypeScript
¿Qué es TypeScript?
TypeScript es un lenguaje de programación desarrollado por Microsoft que extiende JavaScript añadiendo tipado estático opcional. Básicamente es JavaScript con superpoderes: todo el código JavaScript válido también es TypeScript válido, pero TypeScript te permite declarar de qué tipo es cada variable, parámetro o valor de retorno, y el compilador detecta errores antes de que lleguen al navegador.
El resultado se transpila a JavaScript estándar, por lo que funciona en cualquier entorno donde funcione JS.
¿Para qué sirve?
El problema de JavaScript es que al ser dinámico, los errores de tipo solo aparecen en tiempo de ejecución, muchas veces ya en producción. TypeScript los detecta mientras escribes el código.
Sirve especialmente para:
- Equipos y proyectos grandes: el tipado actúa como documentación viva y evita errores al refactorizar.
- Autocompletado inteligente: el editor sabe qué propiedades tiene cada objeto, qué devuelve cada función.
- Refactorización segura: renombrar una función o cambiar su firma avisa en todos los sitios donde se usa.
- Interfaces y contratos: define la forma exacta que deben tener los objetos que pasan entre funciones o módulos.
- Código más legible: los tipos hacen explícito lo que antes había que deducir leyendo el código.
Conceptos clave
Tipos básicos
let nombre: string = 'Ana';
let edad: number = 30;
let activo: boolean = true;
let lista: string[] = ['a', 'b', 'c'];
let cualquiera: any = 'esto desactiva el tipado, úsalo poco';
Funciones tipadas
function saludar(nombre: string): string {
return `Hola, ${nombre}`;
}
// Con parámetro opcional
function sumar(a: number, b: number, c?: number): number {
return a + b + (c ?? 0);
}
Interfaces y tipos
// Interface: define la forma de un objeto
interface Usuario {
id: number;
nombre: string;
email: string;
rol?: 'admin' | 'user'; // propiedad opcional + union type
}
// Type alias: similar pero más flexible para tipos complejos
type ID = string | number;
type Estado = 'activo' | 'inactivo' | 'pendiente';
Generics
Los genéricos permiten escribir funciones o clases que funcionan con cualquier tipo manteniendo el tipado:
function primerElemento<T>(lista: T[]): T | undefined {
return lista[0];
}
const num = primerElemento([1, 2, 3]); // TypeScript sabe que es number
const str = primerElemento(['a', 'b']); // TypeScript sabe que es string
Inferencia de tipos
TypeScript no obliga a declarar el tipo siempre, lo infiere del valor:
let mensaje = 'hola'; // TypeScript infiere: string
let contador = 0; // TypeScript infiere: number
// Si intentas hacer esto, TypeScript avisa:
mensaje = 42; // ❌ Error: Type 'number' is not assignable to type 'string'
TypeScript vs JavaScript
| JavaScript | TypeScript | |
|---|---|---|
| Tipado | Dinámico (en ejecución) | Estático (en compilación) |
| Errores | En tiempo de ejecución | Mientras escribes |
| Autocompletado | Básico | Avanzado |
| Curva de aprendizaje | Baja | Media |
| Requiere compilación | No | Sí (a JS) |
Conceptos relacionados
JavaScript Node.js React APIConclusión
TypeScript no reemplaza JavaScript, lo mejora. Es especialmente valioso en proyectos que crecen en tamaño o en equipo, donde los errores de tipo en producción son costosos. La inversión en aprenderlo se recupera rápido en forma de menos bugs y código más fácil de mantener.