Tutorial de TypeScript para principiantes: guía completa de TypeScript
TypeScript es JavaScript con tipos. Te avisa de los errores mientras escribes código, no después de que los encuentren tus usuarios. Apréndelo paso a paso.
- TypeScript añade tipos sobre JavaScript y se compila a JavaScript normal.
- Encuentra muchos errores en tu editor, antes de ejecutar el código.
- Aprende primero los tipos básicos, las interfaces, las uniones y los genéricos.
- Activa el modo
strictpara sacarle el máximo partido.
En JavaScript puedes pasar un número donde se espera una cadena y nada te avisa hasta que algo se rompe en tiempo de ejecución. En un proyecto grande, ese tipo de error es caro.
TypeScript lo arregla. Comprueba tu código mientras escribes y subraya los problemas en rojo. Si ya conoces lo básico, nuestro tutorial de JavaScript es el mejor lugar para empezar.
¿Por qué usar TypeScript?
- Menos errores: los errores de tipos aparecen pronto.
- Mejor ayuda del editor: el autocompletado y el renombrado seguro funcionan mucho mejor.
- Código autodocumentado: los tipos dicen a quien lee qué espera una función.
- Cambios más seguros: es más fácil actualizar los proyectos grandes.
- Genial para pruebas: Playwright y muchas otras herramientas tienen soporte de primera clase para TypeScript.
Configura TypeScript
Instala Node.js y crea un proyecto:
mkdir ts-demo && cd ts-demo
npm init -y
npm install --save-dev typescript tsx
npx tsc --init
Crea hello.ts:
const message: string = "¡Hola, TypeScript!";
console.log(message);
Ejecútalo con npx tsx hello.ts, o compílalo con npx tsc para obtener un archivo .js.
Tipos básicos
let name: string = "Asha";
let age: number = 28;
let isActive: boolean = true;
let tags: string[] = ["qa", "ts"];
let pair: [string, number] = ["id", 7]; // tupla
let anything: unknown = "puede ser cualquier valor";
age = "veinte"; // Error: Type 'string' is not assignable to type 'number'
A menudo no necesitas escribir el tipo. TypeScript lo infiere: let count = 5 ya es un número. Evita any, porque desactiva la comprobación. Usa unknown cuando de verdad no conozcas el tipo.
Funciones con tipos
function add(a: number, b: number): number {
return a + b;
}
const greet = (name: string, title?: string): string =>
title ? `${title} ${name}` : name;
add(2, "3"); // Error
El ? marca un parámetro opcional. El : number tras los paréntesis es el tipo de retorno.
Interfaces y alias de tipo
Úsalos para describir la forma de un objeto.
interface User {
id: number;
name: string;
email?: string; // opcional
readonly role: string; // no se puede cambiar
}
const user: User = { id: 1, name: "Asha", role: "tester" };
type ID = string | number;
Las interfaces y los alias de tipo se solapan. Una regla sencilla: usa interface para formas de objeto que puedas ampliar, y type para uniones y otras combinaciones.
Uniones y estrechamiento
type Status = "pending" | "paid" | "failed";
function show(value: string | number) {
if (typeof value === "string") {
return value.toUpperCase(); // TS sabe que aquí es una cadena
}
return value.toFixed(2); // y aquí un número
}
function label(s: Status) { /* solo 3 valores válidos */ }
El estrechamiento (narrowing) significa que TypeScript deduce el tipo exacto dentro de cada rama. Las uniones literales, como "pending" | "paid", son estupendas para sustituir cadenas arbitrarias.
Genéricos
Los genéricos permiten que una función trabaje con muchos tipos y siga siendo segura.
function first<T>(items: T[]): T | undefined {
return items[0];
}
const n = first([10, 20]); // number | undefined
const s = first(["a", "b"]); // string | undefined
interface ApiResponse<T> {
data: T;
error?: string;
}
const res: ApiResponse<User[]> = { data: [] };
Piensa en T como un marcador de posición que se rellena cuando usas la función.
Clases
class Account {
constructor(
public owner: string,
private balance = 0
) {}
deposit(amount: number): void {
this.balance += amount;
}
get total(): number {
return this.balance;
}
}
const acc = new Account("Asha");
acc.deposit(100);
acc.balance; // Error: 'balance' is private
Opciones clave de tsconfig
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"outDir": "dist"
},
"include": ["src"]
}
"strict": true activa el conjunto completo de comprobaciones de seguridad. Puede mostrar más errores al principio, pero merece la pena. En un proyecto de JavaScript existente, avanza paso a paso: cambia el nombre de un archivo cada vez a .ts.
Usar TypeScript en la automatización de pruebas
TypeScript hace más seguro el código de pruebas, porque las erratas en los métodos de los page objects o en los datos se detectan antes de la ejecución. Playwright está construido pensando en TypeScript. Nuestro ejemplo de framework lo usa en todo momento, y puedes comparar herramientas en las mejores herramientas de automatización de pruebas.
Consejo: tipa las respuestas de tu API. Si cambia un campo del back-end, tu editor te muestra todos los lugares que hay que arreglar. Lee las buenas prácticas de API REST para saber cómo deben ser las API.
Preguntas frecuentes
¿Vale la pena aprender TypeScript en 2026?
Sí. Muchos equipos lo usan para aplicaciones web, back-ends y automatización de pruebas, y muchas ofertas de empleo lo piden.
¿Necesito aprender JavaScript primero?
Deberías conocer lo básico. TypeScript es un superconjunto de JavaScript, así que todo lo que aprendas en JavaScript sigue siendo válido.
¿Se ejecuta TypeScript en el navegador?
Los navegadores ejecutan JavaScript. TypeScript se compila primero a JavaScript, o se ejecuta mediante una herramienta que lo hace por ti.
¿Cuál es la diferencia entre interface y type?
Ambos describen formas. Las interfaces son mejores para objetos que pueden ampliarse. Los tipos son más flexibles y pueden describir uniones.
¿Debería usar any?
Evítalo. Desactiva la comprobación de tipos. Usa unknown y estrecha el tipo, o define un tipo adecuado.
Sigue aprendiendo
¿Necesitas ayuda con testing, WordPress o SEO?
Ayudamos a los equipos a lanzar mejor software y a hacer crecer sus sitios. Cuéntanos en qué trabajas y te sugeriremos un siguiente paso claro.
Más guías sobre testing, IA y desarrollo moderno
¿Te gustó este artículo? Elige otro tutorial y sigue aprendiendo.
Tutorial de Git para principiantes: guía completa de Git y GitHub
Aprende Git desde cero. Crea repositorios, haz commits, ramas y fusiones, corrige errores y trabaja con pull requests de GitHub, con comandos sencillos y ejemplos claros.
Leer artículo →DevOpsTutorial de Docker para principiantes: guía completa de Docker en 2026
¿Nuevo en Docker? Aprende contenedores, imágenes, Dockerfiles, volúmenes, redes y Docker Compose con comandos sencillos y un pequeño proyecto que puedes ejecutar en tu propio ordenador.
Leer artículo →Inteligencia artificialRAG vs fine-tuning vs prompt engineering: ¿cómo deben elegir los desarrolladores?
¿Debes usar RAG, fine-tuning o prompt engineering? Aprende qué hace cada uno, cuánto cuesta y una guía de decisión sencilla para tu próximo proyecto de IA.
Leer artículo →