TypeScript 7 hadir dengan kompiler berbasis Go yang memangkas waktu pengecekan tipe menjadi sepersepuluh dari durasi sebelumnya dan mengurangi penggunaan memori hingga seperempat, sebuah perubahan yang akan langsung terasa saat pengembang menekan tombol “save” di VS Code.
Keputusan Microsoft untuk menulis ulang inti dari layanan bahasa (language service) dalam Go menyusul keluhan selama bertahun-tahun bahwa incremental checker TypeScript dapat terhenti pada monorepo yang besar. Dengan memindahkan tugas berat—parsing dan pengecekan tipe—keluar dari implementasi JavaScript yang sudah lama digunakan, tim telah membuka kemampuan paralelisme pada tingkat bahasa dan mengurangi overhead dari runtime Node.js.
Mengapa penulisan ulang ini penting
Aplikasi web modern yang dibangun dengan framework seperti Next.js atau Nuxt secara rutin menarik ribuan modul. Dalam lingkungan tersebut, waktu untuk memunculkan kesalahan tipe pertama dapat mendominasi siklus edit-compile-debug. Kompiler baru ini memangkas waktu untuk menemukan kesalahan pertama di VS Code dari 17,5 detik menjadi kurang dari 1,3 detik, sebuah peningkatan kecepatan 11,9x hanya untuk editor tersebut. Benchmark independen dari berbagai proyek mengonfirmasi peningkatan serupa:
- VS Code: 11,9x lebih cepat
- Sentry: 8,9x lebih cepat
- Bluesky: 8,7x lebih cepat
- Playwright: 8,7x lebih cepat
- Tldraw: 7,7x lebih cepat
Penggunaan memori juga meningkat. Server TypeScript di VS Code kini mengonsumsi RAM 18% lebih sedikit, Bluesky mengalami pengurangan 26%, dan Tldraw menghemat 15%.
Angka-angka ini diterjemahkan ke dalam produktivitas dunia nyata: seorang pengembang yang menyimpan file setiap beberapa detik kini dapat melakukan iterasi sepuluh kali lebih cepat, secara drastis mengurangi hambatan harian pada basis kode (codebase) yang besar.
Kontrol baru untuk pengaturan yang lebih mendetail
Kompiler Go memperkenalkan serangkaian command-line flags yang memungkinkan tim menyesuaikan performa dengan perangkat keras dan alur kerja mereka:
- Pemrosesan paralel (
--checkersdan--builders) menjalankan parsing dan pengecekan tipe secara bersamaan, memungkinkan pengguna menyeimbangkan kecepatan dengan tekanan memori. - Mode single-threaded (
--singleThreaded) menyederhanakan debugging dan cocok untuk lingkungan dengan sumber daya rendah. - Worker yang dapat diskalakan memungkinkan worker pengecekan tipe diskalakan secara independen dari worker builder, memungkinkan build pipeline khusus.
- Watch mode yang ditingkatkan mengganti pemindai file berbasis Node yang lama dengan file watcher Go, menghilangkan pemindaian rekursif yang memakan biaya pada pohon
node_modulesyang masif.
Opsi-opsi ini memberikan kemampuan bagi organisasi besar untuk memeras performa ekstra dari pipa CI tanpa harus merombak kode mereka yang sudah ada.
Risiko dan penolakan
Menulis ulang komponen inti dalam bahasa yang berbeda bukan tanpa kontroversi. Beberapa pengembang khawatir bahwa beralih ke Go dapat menimbulkan bug atau ketidakcocokan baru yang telah diselesaikan oleh implementasi JavaScript yang sudah matang. Perubahan ini juga menambahkan ketergantungan runtime Go ke dalam toolchain TypeScript, yang mungkin mempersulit lingkungan yang sangat bergantung pada Node.js. Pengguna awal perlu memvalidasi bahwa plugin khusus dan ekstensi language server mereka tetap berfungsi tanpa perubahan.
Apa yang perlu diperhatikan selanjutnya
Microsoft telah menjadikan kompiler berbasis Go sebagai default dalam rilis publik, tetapi mesin JavaScript yang lebih lama tetap tersedia sebagai cadangan (fallback). Memantau tingkat adopsi di berbagai IDE utama dan layanan CI akan menunjukkan apakah peningkatan performa lebih besar daripada hambatan migrasi. Selain itu, umpan balik komunitas terhadap flag baru akan membentuk bagaimana kompiler berkembang—jika pengembang merasa opsi paralel sulit untuk disetel, Microsoft mungkin akan memperkenalkan preset tingkat tinggi.
Kesimpulan: Penulisan ulang Go pada TypeScript 7 memberikan pengecekan tipe hingga sepuluh kali lebih cepat dan penghematan memori yang nyata, sebuah pergeseran yang dapat membuat pengembangan JavaScript skala besar terasa jauh lebih responsif—asalkan ekosistem dapat beradaptasi dengan lancar ke runtime baru tersebut.
