TypeScript 7 adalah compiler TypeScript yang ditulis ulang dengan Go dan dirilis sebagai program native. Bahasanya sama, perintahnya tetap tsc, dan package npm-nya tetap typescript; yang berubah adalah kecepatannya (full build sekitar sepuluh kali lebih cepat), sejumlah default baru, dan dihapusnya opsi yang sudah dinyatakan deprecated di TypeScript 6. TypeScript 7.0 dirilis pada 8 Juli 2026, dan versi di npm adalah 7.0.2.
npm install --save-dev typescript@latest
npx tsc --version
Version 7.0.2
Salah satu dari sedikit perbedaan yang terlihat di tingkat tipe adalah cara template literal type memecah string. JavaScript menyimpan string sebagai unit kode UTF-16, dan emoji seperti 😀 memakai dua unit:
TypeScript 6 memecah template literal type per unit kode, seperti text[0]. TypeScript 7 memecahnya per code point, seperti [...text], sehingga emoji tetap utuh:
type HeadTail<S> = S extends `${infer Head}${infer Tail}` ? [Head, Tail] : never;
type Result = HeadTail<"😀abc">;
// TypeScript 7: ["😀", "abc"]
// TypeScript 6: ["\ud83d", "\ude00abc"]
Kenapa TypeScript Ditulis Ulang dengan Go
Sampai versi 6, compiler TypeScript ditulis dengan TypeScript itu sendiri dan berjalan di Node.js. Pada codebase besar, ini berarti build yang lambat, editor yang lambat terbuka, dan pemakaian memori yang tinggi.
Anders Hejlsberg mengumumkan port native ini pada 11 Maret 2025, dalam tulisan berjudul "A 10x Faster TypeScript". Codebase barunya diberi nama kode Corsa, dan codebase JavaScript-nya Strada. Tim itu mem-port kode compiler yang sudah ada alih-alih merancang ulang type checker, jadi compiler baru mengikuti aturan yang sama dan melaporkan error yang sama. TypeScript 6.0 (Maret 2026) adalah rilis terakhir dari codebase JavaScript dan berfungsi sebagai jembatan: versi itu menandai deprecated semua yang akan dihapus oleh TypeScript 7. TypeScript 7.0 menyusul pada 8 Juli 2026.
Seberapa Cepat TypeScript 7
Full build proyek open source, seperti yang dipublikasikan bersama rilis 7.0:
| Proyek | TypeScript 6 | TypeScript 7 | Percepatan | Memori |
|---|---|---|---|---|
| VS Code | 125,7 s | 10,6 s | 11,9x | 5,2 GB menjadi 4,2 GB |
| Sentry | 139,8 s | 15,7 s | 8,9x | 4,9 GB menjadi 4,6 GB |
| Bluesky | 24,3 s | 2,8 s | 8,7x | 1,8 GB menjadi 1,3 GB |
| Playwright | 12,8 s | 1,47 s | 8,7x | 1,0 GB menjadi 0,9 GB |
| tldraw | 11,2 s | 1,46 s | 7,7x | 0,6 GB menjadi 0,5 GB |
Pengujian itu memakai default 4 worker pemeriksa tipe. Dengan --checkers 8 di mesin yang sama, build VS Code butuh 7,51 s (16,7x) dan tldraw 1,06 s (10,6x), dengan konsekuensi memori yang lebih besar.
Editor juga mendapat peningkatan yang sama besar. Language service sekarang berjalan sebagai language server native: di codebase VS Code, waktu dari membuka editor sampai melihat error pertama di sebuah file turun dari sekitar 17,5 detik menjadi di bawah 1,3 detik. Percepatan ini paling terasa untuk monorepo, pipeline CI, dan editor pada codebase besar.
Apa yang Tetap Sama
- Perintah dan package-nya.
npm install --save-dev typescriptdannpx tsc. Saat instalasi, npm memilih binary siap pakai untuk platformmu dari optional dependency seperti@typescript/typescript-linux-x64, jadi tidak ada lagi yang perlu disiapkan. - Bahasanya. Sintaks yang sama, sistem tipe yang sama, kode error yang sama.
- Hasilnya. Catatan rilis menyatakan bahwa praktis semua kode yang lolos kompilasi tanpa masalah di TypeScript 6.0, dengan flag
stableTypeOrderingaktif dan tanpa pengaturanignoreDeprecationsapa pun, seharusnya terkompilasi dengan hasil yang sama di TypeScript 7.0.
Default Baru
TypeScript 6.0 mengubah default berikut dan TypeScript 7 mempertahankannya. Perubahan ini hanya berpengaruh pada opsi yang tidak diatur di tsconfig.json-mu:
| Opsi | Default baru | Dampaknya kalau kamu mengandalkan default lama |
|---|---|---|
strict | true | Proyek yang tidak pernah mengatur strict sekarang mendapat strict null checks, noImplicitAny dan pemeriksaan lainnya |
target | es2025, versi terbaru sebelum esnext | Output mempertahankan sintaks modern kecuali kamu mengatur target yang lebih lama |
module | esnext | Output berupa ES module kecuali kamu mengatur nodenext atau commonjs |
types | [] | Package @types yang terpasang tidak lagi dimuat otomatis: tambahkan "types": ["node"] (["*"] mengembalikan perilaku lama) |
rootDir | ./, folder tempat tsconfig.json berada | Kalau outDir diatur dan kode sumber ada di src, muncul error TS5011 sampai kamu mengatur "rootDir": "./src" |
noUncheckedSideEffectImports | true | Import untuk efek samping seperti import "./styles.css" butuh deklarasi module (declare module "*.css";), yang biasanya sudah disediakan package tipe dari framework |
stableTypeOrdering | Selalu aktif, tidak bisa dimatikan | Tipe diurutkan dengan cara yang sama di setiap eksekusi, jadi pesan error dan output .d.ts tidak bergantung pada urutan pemeriksaan |
Opsi dan Sintaks yang Dihapus
Opsi yang dinyatakan deprecated di TypeScript 6 menjadi error di TypeScript 7:
target: es5, dandownlevelIteration, yang hanya ada untuk output ES5.moduleResolution: node(juga disebutnode10) danclassic. Pakainodenextataubundler.module: amd,umd,systemdannone.baseUrl(tulispathsrelatif terhadap file tsconfig) danoutFile(pakai bundler).esModuleInterop: false,allowSyntheticDefaultImports: falsedanalwaysStrict: false; ketiganya selalu aktif.
Compiler memberi tahu dengan tepat apa yang harus dihapus:
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.
Dua bentuk sintaks lama juga menjadi error: module Foo { } untuk namespace (tulis namespace Foo { }; declare module "foo" untuk sebuah package tidak terpengaruh) dan import assertion (assert { type: "json" } menjadi 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.
Mengganti module dengan namespace di baris 2 memperbaikinya, dan program mencetak 4.
Di command line, tsc file.ts di folder yang punya tsconfig.json sekarang berhenti dengan error TS5112, bukan lagi diam-diam mengabaikan konfigurasinya. Jalankan tsc saja, atau berikan --ignoreConfig. Di file JavaScript yang diperiksa dengan JSDoc, TypeScript 7 membaca tipe dengan cara yang lebih mirip TypeScript: @enum tidak lagi dikenali, dan nilai yang dipakai sebagai tipe butuh typeof. Halaman tsconfig menunjukkan pengganti untuk setiap opsi yang dihapus.
Tool yang Masih Butuh TypeScript 6
TypeScript 7.0 tidak menyertakan JavaScript API yang stabil. require("typescript") hanya mengembalikan informasi versi (version dan versionMajorMinor), dan fungsi compiler yang dipanggil tool lain (createProgram, language service) tidak ada; entry point typescript/unstable/* dari package itu bersifat eksperimental dan bukan pengganti. Catatan rilis menyebutkan bahwa tim memperkirakan TypeScript 7.1 akan menyertakan API baru yang berbeda. Sampai saat itu, apa pun yang meng-import compiler sebagai library tetap memakai TypeScript 6:
- typescript-eslint (aturan lint yang memahami tipe)
- Tooling bahasa untuk file Vue, Svelte, dan Astro, pemeriksaan tipe template Angular, dan MDX
- ts-node, yang crash saat dijalankan kalau TypeScript 7 terpasang
Untuk tool tersebut, TypeScript menyediakan package kompatibilitas, @typescript/typescript6, yang memasang TypeScript 6 dengan API lengkapnya dan perintah tsc6. Dengan alias npm, satu proyek bisa punya keduanya: TypeScript 7 menangani build, dan tool yang meng-import typescript mendapat versi 6.
{
"devDependencies": {
"@typescript/native": "npm:typescript@^7.0.2",
"typescript": "npm:@typescript/typescript6@^6.0.2"
}
}
Setelah npm install:
$ npx tsc --version
Version 7.0.2
$ npx tsc6 --version
Version 6.0.3
Kalau kamu tidak memakai tool tersebut, pasang typescript biasa dan lewati langkah ini.
Opsi Command Line Baru
Compiler native melakukan parsing, pemeriksaan, dan emit secara paralel. Tiga flag baru mengaturnya, dan catatan rilis menyebut --checkers dan --builders sebagai fitur eksperimental:
| Flag | Fungsinya |
|---|---|
--checkers N | Jumlah worker pemeriksa tipe per proyek (default 4). Lebih banyak bisa membantu di mesin dengan banyak core tetapi memakan memori; lebih sedikit cocok untuk runner CI yang kecil. |
--builders N | Jumlah proyek yang di-build bersamaan dalam --build dari project reference. Nilainya berlipat dengan --checkers: 4 builder dengan 4 checker bisa menjalankan 16 checker sekaligus. |
--singleThreaded | Mematikan semua paralelisme, untuk debugging atau batas memori yang ketat. |
--watch juga ditulis ulang, di atas port Go dari file watcher milik bundler Parcel.
Dukungan Editor
Untuk VS Code, tim TypeScript menerbitkan extension khusus TypeScript 7; setelah dipasang, extension itu menjadi default, dan perintah "Disable TypeScript 7 Language Server" di command palette mengembalikannya ke TypeScript 6. Visual Studio versi terbaru mengaktifkan TypeScript 7 secara otomatis berdasarkan workspace, dan editor lain (Neovim, Zed, Sublime Text, Emacs) terhubung ke sana melalui Language Server Protocol. Proyek yang memakai file Vue, Svelte, Astro, atau MDX, atau template Angular, tetap memakai dukungan editor berbasis TypeScript 6 sampai TypeScript 7 menyediakan API yang bisa dipakai tool tersebut. Proyek Angular tetap bisa menjalankan tsc dari TypeScript 7 untuk pemeriksaan cepat seluruh proyek.
Cara Upgrade ke TypeScript 7
- Upgrade ke TypeScript 6 dulu, kalau kamu masih di 5.x:
npm install --save-dev typescript@6. Perbaiki setiap error deprecation yang dilaporkannya, jangan dibungkam dengan"ignoreDeprecations": "6.0". - Aktifkan
"stableTypeOrdering": truedi TypeScript 6 dan perbaiki apa pun yang berubah karenanya. Inilah konfigurasi yang menurut tim terkompilasi dengan hasil yang sama di versi 7. - Atur opsi yang default-nya berubah kalau kamu bergantung pada nilai lamanya, misalnya
"types": ["node"]dan"rootDir": "./src". - Pasang TypeScript 7:
npm install --save-dev typescript@latest. Setelah itu, kamu boleh menghapusstableTypeOrdering; opsi itu selalu aktif di versi 7. - Periksa tooling-mu. Kalau kamu memakai typescript-eslint, ts-node, atau framework dengan pemeriksaan tipe template, siapkan alias TypeScript 6 seperti di atas.
- Pastikan versinya dengan
npx tsc --version, dan pastikan CI memasang dari lockfile yang sudah diperbarui.
tsgo dan Build Preview
Sebelum rilis, compiler native dipublikasikan sebagai @typescript/native-preview, dengan perintah tsgo, sehingga bisa dicoba berdampingan dengan tsc versi JavaScript. Artikel dari tahun 2025 dan awal 2026 menyebut tsgo. Sejak 7.0, nama itu tidak lagi dipakai sehari-hari: compiler native adalah tsc, dan build nightly-nya dipublikasikan sebagai typescript@next (saat ini versi pengembangan 7.1).
Pertanyaan yang sering diajukan
Apa itu TypeScript 7?
TypeScript 7 adalah rilis pertama compiler TypeScript yang ditulis ulang dengan Go dan dikompilasi menjadi program native, bukan lagi berjalan sebagai JavaScript di Node.js. Ia memeriksa tipe untuk bahasa yang sama dengan perintah tsc yang sama, dan catatan rilisnya melaporkan full build biasanya 8 sampai 12 kali lebih cepat daripada TypeScript 6. TypeScript 7 dirilis pada 8 Juli 2026.
Apakah TypeScript 7 ditulis dengan Go?
Ya. Compiler dan language service-nya di-port dari TypeScript ke Go (proyek ini diberi nama kode Corsa, dan codebase JavaScript-nya Strada). Kamu tetap memasangnya dari npm sebagai package typescript; npm memilih binary native siap pakai untuk sistem operasi dan CPU-mu.
Apakah kodeku perlu diubah untuk TypeScript 7?
Biasanya kodenya tidak, kadang konfigurasinya. TypeScript 7 menghapus opsi yang sudah dinyatakan deprecated di 6.0 (target: es5, moduleResolution: node, baseUrl, outFile dan lainnya) dan mengubah default seperti strict: true dan types: []. Kode yang lolos kompilasi tanpa masalah di TypeScript 6.0, dengan stableTypeOrdering aktif dan tanpa ignoreDeprecations, seharusnya terkompilasi dengan hasil yang sama.
Apa itu tsgo?
tsgo adalah nama perintah di build preview compiler native, yang dipublikasikan sebagai package npm @typescript/native-preview sebelum rilis 7.0. Di TypeScript 7, compiler native itu cukup bernama tsc di package typescript, dan build nightly-nya datang dari typescript@next.
Apakah typescript-eslint bisa dipakai dengan TypeScript 7?
Tidak secara langsung. TypeScript 7.0 tidak menyertakan JavaScript API yang stabil, padahal tool seperti typescript-eslint, ts-node, dan pemeriksa template Vue, Svelte, dan Angular memanggil API itu. Tetap pasang TypeScript 6 untuk tool tersebut melalui package @typescript/typescript6 (sebuah alias npm), dan pakai tsc dari TypeScript 7 untuk build. Tim TypeScript memperkirakan TypeScript 7.1 akan menyertakan API baru yang berbeda.