TypeScript 7 es el compilador de TypeScript reescrito en Go y distribuido como programa nativo. El lenguaje es el mismo, el comando sigue siendo tsc y el paquete de npm sigue siendo typescript; lo que cambia es la velocidad (builds completos unas diez veces más rápidos), un conjunto de nuevos valores por defecto y la eliminación de las opciones que TypeScript 6 marcó como obsoletas. TypeScript 7.0 se publicó el 8 de julio de 2026, y la versión en npm es la 7.0.2.
npm install --save-dev typescript@latest
npx tsc --version
Version 7.0.2
Una de las pocas diferencias visibles a nivel de tipos es cómo los template literal types dividen los strings. JavaScript guarda los strings como unidades de código UTF-16, y un emoji como 😀 ocupa dos de ellas:
TypeScript 6 dividía los template literal types por unidad de código, como text[0]. TypeScript 7 los divide por punto de código, como [...text], así que el emoji queda entero:
type HeadTail<S> = S extends `${infer Head}${infer Tail}` ? [Head, Tail] : never;
type Result = HeadTail<"😀abc">;
// TypeScript 7: ["😀", "abc"]
// TypeScript 6: ["\ud83d", "\ude00abc"]
Por qué se reescribió TypeScript en Go
Hasta la versión 6, el compilador de TypeScript estaba escrito en TypeScript y se ejecutaba en Node.js. En bases de código grandes eso suponía builds lentos, un arranque lento del editor y un consumo alto de memoria.
Anders Hejlsberg anunció el port nativo el 11 de marzo de 2025, en un artículo titulado "A 10x Faster TypeScript". El nuevo código tenía el nombre en clave Corsa, y el de JavaScript, Strada. El equipo portó el código del compilador existente en lugar de rediseñar el comprobador de tipos, así que el nuevo compilador sigue las mismas reglas e informa de los mismos errores. TypeScript 6.0 (marzo de 2026) fue la última versión del código en JavaScript y sirvió de puente: marcó como obsoleto todo lo que TypeScript 7 iba a eliminar. TypeScript 7.0 llegó el 8 de julio de 2026.
Cuánto más rápido es TypeScript 7
Builds completos de proyectos de código abierto, según los datos publicados con la versión 7.0:
| Proyecto | TypeScript 6 | TypeScript 7 | Aceleración | Memoria |
|---|---|---|---|---|
| VS Code | 125.7 s | 10.6 s | 11.9x | de 5.2 GB a 4.2 GB |
| Sentry | 139.8 s | 15.7 s | 8.9x | de 4.9 GB a 4.6 GB |
| Bluesky | 24.3 s | 2.8 s | 8.7x | de 1.8 GB a 1.3 GB |
| Playwright | 12.8 s | 1.47 s | 8.7x | de 1.0 GB a 0.9 GB |
| tldraw | 11.2 s | 1.46 s | 7.7x | de 0.6 GB a 0.5 GB |
Esas ejecuciones usaron el valor por defecto de 4 workers de comprobación de tipos. Con --checkers 8 en la misma máquina, el build de VS Code tardó 7.51 s (16.7x) y el de tldraw 1.06 s (10.6x), a cambio de más memoria.
El editor gana lo mismo. El servicio de lenguaje ahora se ejecuta como un servidor de lenguaje nativo: en el código de VS Code, el tiempo desde abrir el editor hasta ver el primer error de un archivo pasó de unos 17.5 segundos a menos de 1.3 segundos. La aceleración importa sobre todo en monorepos, pipelines de CI y editores con bases de código grandes.
Lo que no cambia
- El comando y el paquete.
npm install --save-dev typescriptynpx tsc. Al instalar, npm elige un binario precompilado para tu plataforma entre dependencias opcionales como@typescript/typescript-linux-x64, así que no hay nada más que configurar. - El lenguaje. La misma sintaxis, el mismo sistema de tipos, los mismos códigos de error.
- Los resultados. Las notas de la versión afirman que prácticamente todo el código que compila sin errores con TypeScript 6.0, con el flag
stableTypeOrderingactivado y sin ningún ajusteignoreDeprecations, debería compilar de forma idéntica en TypeScript 7.0.
Nuevos valores por defecto
TypeScript 6.0 cambió estos valores por defecto y TypeScript 7 los mantiene. Solo importan para las opciones que tu tsconfig.json no fija:
| Opción | Nuevo valor por defecto | Efecto si dependías del anterior |
|---|---|---|
strict | true | Los proyectos que nunca fijaron strict ahora tienen strict null checks, noImplicitAny y el resto |
target | es2025, la versión más nueva antes de esnext | La salida mantiene la sintaxis moderna salvo que fijes un target más antiguo |
module | esnext | Salida de módulos ES salvo que fijes nodenext o commonjs |
types | [] | Los paquetes @types instalados ya no se cargan automáticamente: añade "types": ["node"] (["*"] recupera el comportamiento anterior) |
rootDir | ./, la carpeta que contiene tsconfig.json | Con outDir fijado y el código en src, aparece error TS5011 hasta que fijes "rootDir": "./src" |
noUncheckedSideEffectImports | true | Un import de efecto secundario como import "./styles.css" necesita una declaración de módulo (declare module "*.css";), que suelen aportar los paquetes de tipos de los frameworks |
stableTypeOrdering | Siempre activado, no se puede desactivar | Los tipos se ordenan igual en cada ejecución, así que los mensajes de error y la salida .d.ts no dependen del orden de comprobación |
Opciones y sintaxis eliminadas
Las opciones marcadas como obsoletas en TypeScript 6 son errores en TypeScript 7:
target: es5, ydownlevelIteration, que solo existía para la salida ES5.moduleResolution: node(también llamadanode10) yclassic. Usanodenextobundler.module: amd,umd,systemynone.baseUrl(escribepathsrelativas al archivo tsconfig) youtFile(usa un bundler).esModuleInterop: false,allowSyntheticDefaultImports: falseyalwaysStrict: false; las tres están siempre activadas.
El compilador indica exactamente qué quitar:
error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration.
error TS5108: Option 'moduleResolution=node10' has been removed. Please remove it from your configuration.
Dos formas de sintaxis antiguas también son errores: module Foo { } para un namespace (escribe namespace Foo { }; declare module "foo" para un paquete no cambia) y las import assertions (assert { type: "json" } pasa a ser with { type: "json" }).
index.ts(2,8): error TS1540: A 'namespace' declaration should not be declared using the 'module' keyword. Please use the 'namespace' keyword instead.
Cambiar module por namespace en la línea 2 lo corrige, y el programa imprime 4.
En la línea de comandos, tsc file.ts en una carpeta que tiene un tsconfig.json ahora se detiene con error TS5112 en lugar de ignorar la configuración en silencio. Ejecuta tsc solo, o pasa --ignoreConfig. En los archivos JavaScript comprobados con JSDoc, TypeScript 7 lee los tipos de forma más parecida a como lo hace TypeScript: @enum ya no se reconoce, y un valor usado como tipo necesita typeof. La página de tsconfig muestra qué usar en lugar de cada opción eliminada.
Herramientas que aún necesitan TypeScript 6
TypeScript 7.0 no incluye una API JavaScript estable. require("typescript") solo devuelve información de versión (version y versionMajorMinor), y las funciones del compilador que llaman otras herramientas (createProgram, el servicio de lenguaje) no están; los puntos de entrada typescript/unstable/* del paquete son experimentales y no sirven de sustituto. Las notas de la versión dicen que el equipo espera que TypeScript 7.1 incluya una API nueva y distinta. Hasta entonces, todo lo que importa el compilador como librería sigue usando TypeScript 6:
- typescript-eslint (reglas de lint que usan tipos)
- Las herramientas de lenguaje para archivos de Vue, Svelte y Astro, la comprobación de tipos de las plantillas de Angular, y MDX
- ts-node, que falla al arrancar con TypeScript 7 instalado
Para ellas, TypeScript publica un paquete de compatibilidad, @typescript/typescript6, que instala TypeScript 6 con su API completa y un comando tsc6. Con alias de npm, un proyecto puede tener los dos: TypeScript 7 hace los builds, y las herramientas que importan typescript reciben la versión 6.
{
"devDependencies": {
"@typescript/native": "npm:typescript@^7.0.2",
"typescript": "npm:@typescript/typescript6@^6.0.2"
}
}
Después de npm install:
$ npx tsc --version
Version 7.0.2
$ npx tsc6 --version
Version 6.0.3
Si no usas ninguna de esas herramientas, instala typescript sin más y sáltate esto.
Nuevas opciones de línea de comandos
El compilador nativo analiza, comprueba y genera código en paralelo. Tres flags nuevos lo controlan, y las notas de la versión consideran experimentales --checkers y --builders:
| Flag | Qué hace |
|---|---|
--checkers N | Número de workers de comprobación de tipos por proyecto (4 por defecto). Más puede ayudar en máquinas con muchos núcleos y cuesta memoria; menos va bien en runners de CI pequeños. |
--builders N | Número de proyectos que se compilan a la vez en un --build de project references. Se multiplica con --checkers: 4 builders con 4 checkers pueden ejecutar 16 checkers a la vez. |
--singleThreaded | Desactiva todo el paralelismo, para depurar o con límites de memoria ajustados. |
--watch también se reescribió, sobre un port a Go del vigilante de archivos del bundler Parcel.
Soporte en los editores
Para VS Code, el equipo de TypeScript publica una extensión específica de TypeScript 7; una vez instalada pasa a ser la opción por defecto, y el comando "Disable TypeScript 7 Language Server" de la paleta de comandos vuelve a TypeScript 6. La última versión de Visual Studio activa TypeScript 7 automáticamente según el espacio de trabajo, y otros editores (Neovim, Zed, Sublime Text, Emacs) se conectan a él mediante el Language Server Protocol. Los proyectos que usan archivos de Vue, Svelte, Astro o MDX, o plantillas de Angular, mantienen el soporte del editor basado en TypeScript 6 hasta que TypeScript 7 exponga una API que esas herramientas puedan usar. Un proyecto de Angular puede seguir ejecutando el tsc de TypeScript 7 para comprobaciones rápidas de todo el proyecto.
Cómo actualizar a TypeScript 7
- Actualiza primero a TypeScript 6, si estás en la 5.x:
npm install --save-dev typescript@6. Corrige cada error de obsolescencia que indique en lugar de silenciarlo con"ignoreDeprecations": "6.0". - Activa
"stableTypeOrdering": trueen TypeScript 6 y corrige lo que cambie. Es la configuración que, según el equipo, compila de forma idéntica en la 7. - Fija las opciones cuyo valor por defecto cambió si dependías de los valores anteriores, por ejemplo
"types": ["node"]y"rootDir": "./src". - Instala TypeScript 7:
npm install --save-dev typescript@latest. Después puedes quitarstableTypeOrderingsi quieres; en la 7 siempre está activado. - Revisa tus herramientas. Si usas typescript-eslint, ts-node o un framework con comprobación de tipos en las plantillas, configura el alias de TypeScript 6 que se muestra arriba.
- Confirma la versión con
npx tsc --version, y asegúrate de que el CI instala desde el lockfile actualizado.
tsgo y las versiones preliminares
Antes del lanzamiento, el compilador nativo se publicó como @typescript/native-preview, cuyo comando era tsgo, para poder probarlo junto al tsc en JavaScript. Los artículos de 2025 y de principios de 2026 hablan de tsgo. Con la 7.0 ese nombre desaparece del uso diario: el compilador nativo es tsc, y sus versiones nightly se publican como typescript@next (hoy, versiones de desarrollo de la 7.1).
Preguntas frecuentes
¿Qué es TypeScript 7?
TypeScript 7 es la primera versión del compilador de TypeScript reescrito en Go y compilado como programa nativo, en lugar de ejecutarse como JavaScript sobre Node.js. Comprueba los tipos del mismo lenguaje con el mismo comando tsc, y las notas de la versión indican builds completos normalmente entre 8 y 12 veces más rápidos que con TypeScript 6. Se publicó el 8 de julio de 2026.
¿TypeScript 7 está escrito en Go?
Sí. El compilador y el servicio de lenguaje se portaron de TypeScript a Go (el proyecto tenía el nombre en clave Corsa, y el código en JavaScript, Strada). Se sigue instalando desde npm como el paquete typescript; npm elige un binario nativo precompilado para tu sistema operativo y tu CPU.
¿Tengo que cambiar mi código para TypeScript 7?
Normalmente el código no, a veces la configuración. TypeScript 7 elimina opciones que la 6.0 marcó como obsoletas (target: es5, moduleResolution: node, baseUrl, outFile y otras) y cambia valores por defecto como strict: true y types: []. El código que compila sin errores con TypeScript 6.0, con stableTypeOrdering activado y sin ignoreDeprecations, debería compilar de forma idéntica.
¿Qué es tsgo?
tsgo era el nombre del comando de las versiones preliminares del compilador nativo, publicadas como el paquete de npm @typescript/native-preview antes de la versión 7.0. En TypeScript 7 el compilador nativo es simplemente tsc en el paquete typescript, y las versiones nightly vienen de typescript@next.
¿Funciona typescript-eslint con TypeScript 7?
No directamente. TypeScript 7.0 no incluye una API JavaScript estable, y herramientas como typescript-eslint, ts-node y los comprobadores de plantillas de Vue, Svelte y Angular llaman a esa API. Mantén TypeScript 6 instalado para ellas mediante el paquete @typescript/typescript6 (un alias de npm) y usa el tsc de TypeScript 7 para los builds. El equipo de TypeScript espera que TypeScript 7.1 incluya una API nueva y distinta.