Inicio / Artículos / Los cambios en los valores predeterminados de TypeScript 6.0: Una guía práctica para la migración

Los cambios en los valores predeterminados de TypeScript 6.0: Una guía práctica para la migración

Aprenda cuáles son los nueve valores predeterminados del compilador de TypeScript 6.0 que han cambiado, cómo configurar tsconfig para el año 2026 y cómo preparar los repositorios de código para TypeScript 7 basado en Go.

805 palabras

Si recientemente su proceso de compilación comenzó a generar errores en moduleResolution: node, no es que haya habido algún problema en su lado. TypeScript 6.0 modificó silenciosamente nueve valores predeterminados del compilador, y los equipos que pospusieron la actualización ahora se enfrentan a todos estos cambios al mismo tiempo. La versión directa es esta: no se trata de una actualización que pueda posponerse indefinidamente. TypeScript 6.0 es la versión final desarrollada sobre el compilador original basado en JavaScript. TypeScript 7 llega como una reescritura completa en Go, y los informes preliminares indican que las velocidades de compilación pueden ser hasta 10 veces más rápidas que las actuales.

¿Qué cambió realmente?

  1. El modo estricto viene activado por defecto. Cualquier proyecto nuevo que se cree ahora hereda automáticamente strict: true. Si estás manteniendo una base de código antigua, prepárate para enfrentar una serie de nuevos diagnósticos relacionados con tipos implícitos any y verificaciones de nulabilidad que anteriormente pasaban desapercibidas.
  2. El objetivo de compilación por defecto pasó de ES3 a ES2022. Casi nadie generaba código en formato ES3, pero si tu proceso de desarrollo no establecía explícitamente un objetivo específico, este cambio afecta el código que el compilador emite por defecto.
  3. ESM se convierte en el sistema de módulos por defecto. Las bases de código que aún dependen en gran medida de las llamadas require() necesitan revisar detenidamente su estrategia de módulos, ya que las suposiciones integradas en el compilador ya no favorecen a CommonJS.
  • moduleResolution: node ya está obsoleto. La opción recomendada es pasar a bundler o nodenext, ya que la resolución al estilo bundler ahora coincide con la forma en que herramientas como Vite resuelven módulos en la práctica.
  • --outFile, junto con los formatos de salida AMD, UMD y SystemJS, ya no están soportados. Si su proceso de compilación sigue utilizando alguno de estos, TypeScript 6.0 aún no está listo para su proyecto.
  • La palabra clave assert para atributos de importación ha sido reemplazada por with.
  • Una tsconfig recomendada para 2026

    {
      "compilerOptions": {
        "target": "ES2022",
        "module": "ESNext",
        "moduleResolution": "bundler",
        "isolatedDeclarations": true,
        "strict": true,
        "noUncheckedIndexedAccess": true,
        "exactOptionalPropertyTypes": true,
        "skipLibCheck": true
      }
    }
    

    Al aplicar esta configuración en varios proyectos de tamaño medio basados en React y Next.js este trimestre, surgieron errores que casi siempre eran fallos reales y no falsos positivos.

    La nueva bandera stableTypeOrdering

    Esta opción no recibe la atención que merece. Normaliza el orden interno de las uniones de tipos, lo que significa que las diferencias entre los resultados del compilador JavaScript tradicional y el futuro compilador basado en Go realmente tienen sentido, en lugar de ser ruido causado por un reordenamiento arbitrario. Activarla ahora y obtener una compilación limpia equivale a un ensayo previo que valida tu código antes de la transición a TypeScript 7.

    La importancia de esto para los equipos full-stack

    • La respuesta del editor ha mejorado notablemente, ya que el servicio de lenguaje es ahora más rápido que el propio compilador subyacente, y es con este servicio con el que interactúas constantemente durante el desarrollo diario.
    • Las definiciones de tipos en Redux, React y Next.js se están haciendo más estrictas, por lo que puedes esperar inferencias más rigurosas en tu código de gestión de estado a medida que se actualicen esos paquetes.
  • El ecosistema de complementos está inestable en este momento. Los complementos del compilador escritos para el compilador actual de TypeScript no serán compatibles con la versión 7.0, por lo que si sus herramientas dependen de alguno de ellos, vigile su estado de compatibilidad.
  • Pasos prácticos para la migración

    1. Inicie la actualización en una rama de desarrollo dedicada en lugar de directamente sobre su línea principal.
    2. Ejecute tsc --noEmit y clasifique los errores resultantes según la frecuencia con que aparece un patrón en todo el código, y no según el archivo que los muestre primero.
    3. Aborde primero la configuración moduleResolution, ya que suele ser la que provoca más problemas inesperados.
    4. Solo después de que todo se compile sin errores debería activar stableTypeOrdering, como confirmación final de que la migración es correcta.

    Consideraciones finales

    TypeScript 6.0 no se presenta con características nuevas y espectaculares. Lo que representa es una limpieza cuidadosa y deliberada que precede al cambio arquitectónico más significativo que el lenguaje ha experimentado desde su creación. Realice esta migración en lotes manejables mientras aún tenga los recursos para controlar el proceso. Posponerla no elimina el trabajo; simplemente lo retrasa hasta un momento futuro en el que tendrá menos tiempo y más presión para hacerlo bien.

    Lecturas relacionadas

  • El compilador de TypeScript en Go y la ejecución nativa: una guía de migración — Aprenda cómo el compilador basado en Go de TypeScript y la ejecución nativa de Node.js afectarán los proyectos con React y Next.js, y qué debe corregir ahora en su tsconfig.
  • Enviar datos con RTK Query: una guía práctica sobre mutaciones — Aprenda a utilizar builder.mutation() en RTK Query para enviar solicitudes POST, gestionar los estados de carga y error, y crear un componente de formulario funcional.
  • Tipado de React Hooks: useState, useEffect, useReducer y hooks personalizados — Aprenda cómo tipar correctamente useState, useEffect, useReducer y hooks personalizados en TypeScript, además de cuándo elegir TypeScript en lugar de JavaScript puro realmente trae beneficios.