TypeScript & UI4 min lezen

TypeScript 7 is snel, maar Vue en Astro hebben TypeScript 6 nog nodig

Een feitelijk migratieplan voor TypeScript 7 naast TypeScript 6 in Vue- en Astro-projecten, zonder diagnostiek kwijt te raken.

JDoor Jeffrey Klaassen van Oorschot

TypeScript 7.0 verscheen op 8 juli 2026 als native Go-port. Microsoft meldt bij veel grote repositories ongeveer tien keer snellere typechecks. Dat is echt, maar er is een belangrijke beperking: 7.0 heeft nog geen stabiele programmatische compiler-API. Daardoor kunnen Vue, Astro, MDX, Svelte, Angular-tooling en typescript-eslint niet allemaal tegelijk overstappen.

Bepaal welke TypeScript je precies vervangt

Een moderne frontendrepository gebruikt TypeScript op meerdere plekken. tsc controleert projecten, de editor draait een language server, Volar begrijpt Vue-componenten en Astro of MDX verwerkt ingebedde talen. Alleen de CLI vervangen vernieuwt die andere onderdelen niet automatisch.

Microsoft adviseert Vue-, Astro-, MDX- en Svelte-projecten om TypeScript 6 te blijven gebruiken voor embedded-language-tooling totdat de nieuwe API wordt ondersteund. TypeScript 7.1 moet een API brengen, maar ik behandel dat als een later migratiemoment en niet als een productiebelofte.

Maak TypeScript 6 eerst schoon

TypeScript 7 hoort overeen te komen met TypeScript 6 wanneer versie 6 stabiele typevolgorde gebruikt en deprecations niet negeert. Ik update eerst naar de nieuwste 6.x, verwijder verouderde opties, maak typen expliciet en stel rootDir en strengere defaults bewust in. Dat werk is los beter te reviewen.

Ik bewaar een baseline van diagnostics voor representatieve packages, inclusief .ts, .tsx, JSDoc, gegenereerde declarations, project references en het grootste workspace-package. Wanneer 6 en 7 verschillen, onderzoek ik het verschil in plaats van één compiler stil te zetten.

  • TypeScript 7 gebruikt strict standaard
  • module staat standaard op esnext
  • types begint met een lege lijst
  • rootDir wijst standaard naar de projectroot
  • Opties die in 6 deprecated zijn worden fouten in 7

Draai versie 6 en 7 naast elkaar

De officiële release levert @typescript/typescript6 met een tsc6-command en adviseert aliases wanneer tooling het package typescript moet importeren. Ik gebruik expliciete scriptnamen, zodat niemand denkt dat beide controles hetzelfde doen. Vue- en Astro-checks blijven op ondersteunde tooling; de native compiler wordt een extra controle voor het hele project.

Een transparante configuratie met beide versies
{
  "devDependencies": {
    "@typescript/native": "npm:typescript@^7.0.2",
    "typescript": "npm:@typescript/typescript6@^6.0.2"
  },
  "scripts": {
    "typecheck:ts6": "tsc6 --noEmit",
    "typecheck:ts7": "tsc --noEmit",
    "typecheck:vue": "vue-tsc --noEmit",
    "typecheck:astro": "astro check"
  }
}

Meet de workflow, niet de aankondiging

Ik meet koude CI-tijd, warme incrementele checks, CPU-gebruik in watch-mode, editorrespons en totale feedbacktijd van een pull request. Een veel snellere compiler kan de typecheck sterk verbeteren terwijl dependency-installatie of bundling de totale CI-tijd blijft bepalen. Ook dat is nuttige informatie.

TypeScript 7 blijft niet-blokkerend totdat de diagnostics overeenkomen. Daarna kan de CLI-check verplicht worden. vue-tsc of astro check uitschakelen om mooiere cijfers te krijgen is geen winst; snelle maar onvolledige controle is een achteruitgang.

Ken de rollback

Pin beide versies in de lockfile en houd CI-stappen gescheiden. Wanneer de native compiler een blocker toont, brengt het verwijderen van één verplichte job de repository terug naar het bekende TypeScript 6-pad. Meng configuratie-opruiming, build-tool-updates en adoptie van versie 7 niet in één pull request.

Praktische checklist

  • Inventariseer CLI, editor, ESLint, Vue, Astro, MDX en compiler-API-gebruik
  • Verwijder TypeScript 6-deprecations eerst
  • Draai native tsc naast frameworkchecks
  • Vergelijk diagnostics en workflowtijd
  • Pin beide versies totdat het ecosysteem is bijgewerkt

Verder lezen