O TypeScript 7 é o compilador do TypeScript reescrito em Go e distribuído como programa nativo. A linguagem é a mesma, o comando continua sendo tsc e o pacote npm continua sendo typescript; o que muda é a velocidade (builds completos cerca de dez vezes mais rápidos), um conjunto de novos padrões e a remoção de opções que o TypeScript 6 marcou como obsoletas. O TypeScript 7.0 foi lançado em 8 de julho de 2026, e a versão no npm é a 7.0.2.
npm install --save-dev typescript@latest
npx tsc --version
Version 7.0.2
Uma das poucas diferenças visíveis no nível dos tipos é como os template literal types dividem strings. O JavaScript guarda strings como unidades de código UTF-16, e um emoji como 😀 ocupa duas delas:
O TypeScript 6 dividia template literal types por unidade de código, como text[0]. O TypeScript 7 divide por code point, como [...text], então o emoji fica inteiro:
type HeadTail<S> = S extends `${infer Head}${infer Tail}` ? [Head, Tail] : never;
type Result = HeadTail<"😀abc">;
// TypeScript 7: ["😀", "abc"]
// TypeScript 6: ["\ud83d", "\ude00abc"]
Por que o TypeScript foi reescrito em Go
Até a versão 6, o compilador do TypeScript era escrito em TypeScript e rodava no Node.js. Em bases de código grandes isso significava builds lentos, editor lento para iniciar e alto uso de memória.
Anders Hejlsberg anunciou a versão nativa em 11 de março de 2025, em um post chamado "A 10x Faster TypeScript". A nova base de código recebeu o codinome Corsa, e a de JavaScript, Strada. O time portou o código do compilador existente em vez de redesenhar o verificador de tipos, então o novo compilador segue as mesmas regras e mostra os mesmos erros. O TypeScript 6.0 (março de 2026) foi a última versão da base em JavaScript e serviu de ponte: marcou como obsoleto tudo o que o TypeScript 7 removeria. O TypeScript 7.0 veio em 8 de julho de 2026.
Quanto o TypeScript 7 é mais rápido
Builds completos de projetos open source, como publicados no lançamento da 7.0:
| Projeto | TypeScript 6 | TypeScript 7 | Ganho | Memória |
|---|---|---|---|---|
| VS Code | 125,7 s | 10,6 s | 11,9x | de 5,2 GB para 4,2 GB |
| Sentry | 139,8 s | 15,7 s | 8,9x | de 4,9 GB para 4,6 GB |
| Bluesky | 24,3 s | 2,8 s | 8,7x | de 1,8 GB para 1,3 GB |
| Playwright | 12,8 s | 1,47 s | 8,7x | de 1,0 GB para 0,9 GB |
| tldraw | 11,2 s | 1,46 s | 7,7x | de 0,6 GB para 0,5 GB |
Essas execuções usaram o padrão de 4 workers de verificação de tipos. Com --checkers 8 na mesma máquina, o build do VS Code levou 7,51 s (16,7x) e o do tldraw 1,06 s (10,6x), com mais uso de memória.
O editor ganha na mesma proporção. O language service agora roda como um language server nativo: no código do VS Code, o tempo entre abrir o editor e ver o primeiro erro de um arquivo caiu de cerca de 17,5 segundos para menos de 1,3 segundo. O ganho importa mais em monorepos, pipelines de CI e editores com bases de código grandes.
O que continua igual
- O comando e o pacote.
npm install --save-dev typescriptenpx tsc. Na instalação, o npm escolhe um binário pré-compilado para a sua plataforma a partir de dependências opcionais como@typescript/typescript-linux-x64, então não há mais nada a configurar. - A linguagem. A mesma sintaxe, o mesmo sistema de tipos, os mesmos códigos de erro.
- Os resultados. As notas de lançamento dizem que praticamente todo código que compila sem erros no TypeScript 6.0, com a flag
stableTypeOrderingligada e sem nenhuma configuraçãoignoreDeprecations, deve compilar de forma idêntica no TypeScript 7.0.
Novos padrões
O TypeScript 6.0 mudou estes padrões e o TypeScript 7 os mantém. Eles só importam para opções que o seu tsconfig.json não define:
| Opção | Novo padrão | Efeito se você dependia do antigo |
|---|---|---|
strict | true | Projetos que nunca definiram strict agora recebem strict null checks, noImplicitAny e o resto |
target | es2025, a versão mais nova antes de esnext | A saída mantém a sintaxe moderna, a menos que você defina um target mais antigo |
module | esnext | Saída em módulo ES, a menos que você defina nodenext ou commonjs |
types | [] | Pacotes @types instalados não são mais carregados automaticamente: adicione "types": ["node"] (["*"] restaura o comportamento antigo) |
rootDir | ./, a pasta que contém o tsconfig.json | Com outDir definido e os fontes em src, aparece error TS5011 até você definir "rootDir": "./src" |
noUncheckedSideEffectImports | true | Um import de efeito colateral como import "./styles.css" precisa de uma declaração de módulo (declare module "*.css";), que os pacotes de tipos dos frameworks normalmente fornecem |
stableTypeOrdering | Sempre ligado, não pode ser desligado | Os tipos são ordenados do mesmo jeito em toda execução, então as mensagens de erro e a saída .d.ts não dependem da ordem de verificação |
Opções e sintaxe removidas
Opções marcadas como obsoletas no TypeScript 6 são erros no TypeScript 7:
target: es5, edownlevelIteration, que só existia para saída ES5.moduleResolution: node(também chamadonode10) eclassic. Usenodenextoubundler.module: amd,umd,systemenone.baseUrl(escrevapathsrelativos ao arquivo tsconfig) eoutFile(use um bundler).esModuleInterop: false,allowSyntheticDefaultImports: falseealwaysStrict: false; as três estão sempre ligadas.
O compilador diz exatamente o que remover:
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.
Duas formas antigas de sintaxe também são erros: module Foo { } para um namespace (escreva namespace Foo { }; declare module "foo" para um pacote não é afetado) e import assertions (assert { type: "json" } vira 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.
Trocar module por namespace na linha 2 resolve, e o programa imprime 4.
Na linha de comando, tsc file.ts em uma pasta que tem tsconfig.json agora para com error TS5112, em vez de ignorar a configuração em silêncio. Rode só tsc, ou passe --ignoreConfig. Em arquivos JavaScript verificados com JSDoc, o TypeScript 7 lê os tipos de forma mais parecida com o TypeScript: @enum não é mais reconhecido, e um valor usado como tipo precisa de typeof. A página sobre tsconfig mostra o substituto de cada opção removida.
Ferramentas que ainda precisam do TypeScript 6
O TypeScript 7.0 não traz uma API JavaScript estável. require("typescript") retorna só informações de versão (version e versionMajorMinor), e as funções do compilador que outras ferramentas chamam (createProgram, o language service) não estão lá; os pontos de entrada typescript/unstable/* do pacote são experimentais e não servem de substituto. As notas de lançamento dizem que o time espera que o TypeScript 7.1 traga uma API nova e diferente. Até lá, tudo o que importa o compilador como biblioteca continua usando o TypeScript 6:
- typescript-eslint (regras de lint que usam tipos)
- Ferramentas de linguagem para arquivos Vue, Svelte e Astro, a verificação de tipos de templates do Angular e o MDX
- ts-node, que quebra ao iniciar com o TypeScript 7 instalado
Para esses casos, o TypeScript oferece um pacote de compatibilidade, @typescript/typescript6, que instala o TypeScript 6 com a API completa e um comando tsc6. Com aliases do npm, um projeto pode ter os dois: o TypeScript 7 faz os builds, e as ferramentas que importam typescript recebem a versão 6.
{
"devDependencies": {
"@typescript/native": "npm:typescript@^7.0.2",
"typescript": "npm:@typescript/typescript6@^6.0.2"
}
}
Depois do npm install:
$ npx tsc --version
Version 7.0.2
$ npx tsc6 --version
Version 6.0.3
Se você não usa nenhuma dessas ferramentas, instale o typescript normal e pule esta parte.
Novas opções de linha de comando
O compilador nativo faz o parsing, a verificação e a geração em paralelo. Três flags novas controlam isso, e as notas de lançamento chamam --checkers e --builders de experimentais:
| Flag | O que faz |
|---|---|
--checkers N | Número de workers de verificação de tipos por projeto (padrão 4). Mais workers podem ajudar em máquinas com muitos núcleos e custam memória; menos combinam com runners de CI pequenos. |
--builders N | Número de projetos compilados ao mesmo tempo em um --build de project references. Multiplica com --checkers: 4 builders com 4 checkers podem rodar 16 checkers de uma vez. |
--singleThreaded | Desliga todo o paralelismo, para depuração ou limites de memória apertados. |
O --watch também foi reescrito, sobre uma versão em Go do file watcher do bundler Parcel.
Suporte nos editores
Para o VS Code, o time do TypeScript publica uma extensão própria do TypeScript 7; depois de instalada ela vira o padrão, e o comando "Disable TypeScript 7 Language Server" da paleta de comandos volta para o TypeScript 6. O Visual Studio mais recente ativa o TypeScript 7 automaticamente de acordo com o workspace, e outros editores (Neovim, Zed, Sublime Text, Emacs) se conectam a ele pelo Language Server Protocol. Projetos com arquivos Vue, Svelte, Astro ou MDX, ou com templates Angular, mantêm o suporte de editor baseado no TypeScript 6 até o TypeScript 7 expor uma API que essas ferramentas possam usar. Um projeto Angular ainda pode rodar o tsc do TypeScript 7 para verificações rápidas do projeto inteiro.
Como atualizar para o TypeScript 7
- Atualize primeiro para o TypeScript 6, se estiver no 5.x:
npm install --save-dev typescript@6. Corrija todos os erros de opções obsoletas que ele mostrar, em vez de silenciá-los com"ignoreDeprecations": "6.0". - Ligue
"stableTypeOrdering": trueno TypeScript 6 e corrija o que mudar. Essa é a configuração que, segundo o time, compila de forma idêntica no 7. - Defina as opções cujos padrões mudaram, se você dependia dos valores antigos, por exemplo
"types": ["node"]e"rootDir": "./src". - Instale o TypeScript 7:
npm install --save-dev typescript@latest. Depois, se quiser, remova ostableTypeOrdering; ele está sempre ligado no 7. - Confira as ferramentas. Se você usa typescript-eslint, ts-node ou um framework com verificação de tipos em templates, configure o alias do TypeScript 6 mostrado acima.
- Confirme a versão com
npx tsc --versione garanta que o CI instala a partir do lockfile atualizado.
tsgo e as builds de preview
Antes do lançamento, o compilador nativo era publicado como @typescript/native-preview, cujo comando era tsgo, para poder ser testado ao lado do tsc em JavaScript. Artigos de 2025 e do início de 2026 falam em tsgo. Com a 7.0 esse nome saiu do uso diário: o compilador nativo é o tsc, e as builds nightly são publicadas como typescript@next (hoje, versões de desenvolvimento da 7.1).
Perguntas frequentes
O que é o TypeScript 7?
O TypeScript 7 é a primeira versão do compilador do TypeScript reescrito em Go e compilado como programa nativo, em vez de rodar como JavaScript no Node.js. Ele verifica a mesma linguagem com o mesmo comando tsc, e as notas de lançamento mostram builds completos normalmente de 8 a 12 vezes mais rápidos que no TypeScript 6. Foi lançado em 8 de julho de 2026.
O TypeScript 7 é escrito em Go?
Sim. O compilador e o language service foram portados de TypeScript para Go (o projeto tinha o codinome Corsa, e a base em JavaScript, Strada). Você continua instalando pelo npm como o pacote typescript; o npm escolhe um binário nativo pré-compilado para o seu sistema operacional e CPU.
Preciso mudar meu código para o TypeScript 7?
Normalmente não o código, às vezes a configuração. O TypeScript 7 remove opções que o 6.0 marcou como obsoletas (target: es5, moduleResolution: node, baseUrl, outFile e outras) e muda padrões como strict: true e types: []. Código que compila sem erros no TypeScript 6.0, com stableTypeOrdering ligado e sem ignoreDeprecations, deve compilar de forma idêntica.
O que é o tsgo?
tsgo era o nome do comando nas versões de preview do compilador nativo, publicadas como o pacote npm @typescript/native-preview antes do lançamento da 7.0. No TypeScript 7 o compilador nativo é simplesmente o tsc do pacote typescript, e as builds nightly vêm de typescript@next.
O typescript-eslint funciona com o TypeScript 7?
Não diretamente. O TypeScript 7.0 não traz uma API JavaScript estável, e ferramentas como typescript-eslint, ts-node e os verificadores de templates de Vue, Svelte e Angular chamam essa API. Mantenha o TypeScript 6 instalado para elas pelo pacote @typescript/typescript6 (um alias do npm) e use o tsc do TypeScript 7 para os builds. O time do TypeScript espera que o TypeScript 7.1 traga uma API nova e diferente.