CodeForge

TypeScript de Cero a Experto / Proyectos + retos

Migrar JavaScript a TypeScript: la estrategia

Teoría20 min20 XP

Último módulo, y arranca con una habilidad que usarás toda tu carrera: convertir un proyecto JavaScript existente a TypeScript. No se hace de golpe ni con pánico —se hace por pasos, de "todo permitido" a "estricto"—. Hoy aprendes la estrategia para migrar sin detener el proyecto ni ahogarte en errores rojos.

Renovar la casa habitándola

El puente: allowJs y checkJs

TypeScript puede convivir con JavaScript. Dos flags lo habilitan y te dejan migrar gradualmente:

tsconfig.json (durante la migración)
{
"compilerOptions": {
  "allowJs": true,      // permite que .js y .ts coexistan en el proyecto
  "checkJs": false,     // aún NO revisa los .js (los toleramos sin tipos)
  "strict": false       // arrancamos suave; el estricto llega al final
}
}

allowJs: true deja que tus archivos .js existentes vivan junto a los .ts nuevos —la app sigue corriendo mientras migras—. checkJs: false significa "todavía no me quejes de los .js". Con esto, empiezas a agregar archivos .ts (o renombrar) sin que TS te abrume con errores de todo el código viejo a la vez.

La estrategia, paso a paso

La válvula de escape honesta: @ts-expect-error

Durante una migración, a veces necesitas silenciar un error TEMPORALMENTE para avanzar. La forma honesta es @ts-expect-error, no any por todos lados:

valvula.ts
// @ts-expect-error: silencia el error de la línea SIGUIENTE, y AVISA si algún día
// esa línea deja de tener error (te recuerda quitar el silenciador). Mejor que @ts-ignore.
const valor = libreriaVieja.metodoSinTipos();

// úsalo con moderación y un comentario que explique POR QUÉ. Cada @ts-expect-error
// es deuda técnica visible: un "arréglame cuando puedas", no una solución.

Heredas una app JavaScript de 200 archivos y decides migrarla a TypeScript. ¿Cuál es el primer paso sensato?

Mini-reto

Planea una migración (en papel): 1) toma un proyecto JS pequeño tuyo (o imagina uno con utils.js, api.js, app.js); 2) escribe el ORDEN en que migrarías los archivos y por qué (pista: los de menos dependencias primero); 3) lista los escalones de rigor: ¿allowJs primero? ¿cuándo activas strict? Tener el plan claro es la mitad de una migración exitosa.

Qué sigue

De la teoría a las manos: el primer proyecto del módulo migra "Mi Bolsillo" —la app que construiste en JavaScript en el supercurso anterior— a TypeScript estricto, con tipos en cada rincón. Verás cómo los tipos convierten tu código bueno en código a prueba de balas.