TypeScript 7 hadir dengan kompiler berasaskan Go yang memendekkan masa semakan jenis kepada satu persepuluh daripada tempoh sebelumnya dan mengurangkan penggunaan memori sehingga suku, satu perubahan yang akan dirasai sebaik sahaja pembangun menekan “save” dalam VS Code.
Keputusan Microsoft untuk menulis semula teras perkhidmatan bahasa dalam Go menyusuli bertahun-tahun aduan bahawa penyemak inkremental TypeScript boleh tergendala pada monorepo yang besar. Dengan memindahkan tugas berat—penghuraian (parsing) dan semakan jenis—daripada pelaksanaan JavaScript yang telah lama digunakan, pasukan tersebut telah membuka keupayaan selari (parallelism) pada peringkat bahasa dan mengurangkan beban (overhead) runtime Node.js.
Mengapa penulisan semula ini penting
Aplikasi web moden yang dibina dengan rangka kerja seperti Next.js atau Nuxt secara rutin menarik masuk beribu-ribu modul. Dalam persekitaran tersebut, masa untuk memaparkan ralat jenis yang pertama boleh mendominasi kitaran sunting-kompil-nyahpepijat (edit-compile-debug). Kompiler baharu ini mengurangkan masa untuk mencari ralat pertama dalam VS Code daripada 17.5 saat kepada bawah 1.3 saat, iaitu peningkatan kelajuan sebanyak 11.9x untuk editor tersebut sahaja. Penanda aras bebas daripada pelbagai projek mengesahkan peningkatan yang serupa:
- VS Code: 11.9x lebih pantas
- Sentry: 8.9x lebih pantas
- Bluesky: 8.7x lebih pantas
- Playwright: 8.7x lebih pantas
- Tldraw: 7.7x lebih pantas
Penggunaan memori juga bertambah baik. Pelayan TypeScript dalam VS Code kini menggunakan 18% kurang RAM, Bluesky melihat pengurangan sebanyak 26%, dan Tldraw menjimatkan 15%.
Angka-angka ini diterjemahkan kepada produktiviti dunia nyata: seorang pembangun yang menyimpan fail setiap beberapa saat kini boleh melakukan iterasi sepuluh kali lebih pantas, sekali gus mengurangkan geseran harian pada pangkalan kod (codebase) yang besar secara drastik.
Kawalan baharu untuk kawalan terperinci
Kompiler Go memperkenalkan set bendera baris perintah (command-line flags) yang membolehkan pasukan menyesuaikan prestasi mengikut perkakasan dan aliran kerja mereka:
- Pemprosesan selari (
--checkersdan--builders) menjalankan penghuraian dan semakan jenis secara serentak, membolehkan pengguna mengimbangi kelajuan berbanding tekanan memori. - Mod satu-bebenang (
--singleThreaded) memudahkan penyahpepijatan dan sesuai untuk persekitaran sumber rendah. - Pekerja boleh skala membolehkan pekerja semakan jenis diskalakan secara bebas daripada pekerja pembina, membolehkan saluran paip binaan (build pipelines) tersuai.
- Mod pemerhatian (watch mode) yang dipertingkatkan menggantikan pengimbas fail berasaskan Node yang lama dengan pemerhati fail Go, menghapuskan imbasan rekursif yang memakan kos tinggi pada pokok
node_modulesyang besar.
Pilihan-pilihan ini memberikan organisasi besar keupayaan untuk memerah prestasi tambahan daripada saluran paip CI tanpa perlu merombak kod sedia ada mereka.
Risiko dan tentangan
Menulis semula komponen teras dalam bahasa yang berbeza tidak terlepas daripada kontroversi. Sesetengah pembangun bimbang peralihan ke Go boleh memperkenalkan pepijat baharu atau ketidakserasian yang telah diselesaikan oleh pelaksanaan JavaScript yang matang. Perubahan ini juga menambah kebergantungan runtime Go kepada rangkaian alatan (toolchain) TypeScript, yang mungkin merumitkan persekitaran yang terikat ketat dengan Node.js. Pengguna awal perlu mengesahkan bahawa plugin tersuai dan sambungan pelayan bahasa mereka terus berfungsi tanpa perubahan.
Apa yang perlu diperhatikan seterusnya
Microsoft telah menjadikan kompiler berasaskan Go sebagai lalai dalam keluaran awam, tetapi enjin JavaScript yang lama masih tersedia sebagai sandaran (fallback). Memantau kadar penggunaan merentasi IDE utama dan perkhidmatan CI akan menunjukkan sama ada peningkatan prestasi mengatasi geseran migrasi. Selain itu, maklum balas komuniti mengenai bendera baharu akan mencorak evolusi kompiler tersebut—jika pembangun mendapati pilihan selari sukar untuk dilaraskan, Microsoft mungkin memperkenalkan tetapan pratetap (presets) tahap lebih tinggi.
Rumusan: Penulisan semula Go dalam TypeScript 7 memberikan semakan jenis sehingga sepuluh kali lebih pantas dan penjimatan memori yang ketara, satu peralihan yang boleh membuatkan pembangunan JavaScript skala besar terasa lebih responsif secara serta-merta—dengan syarat ekosistem dapat menyesuaikan diri dengan lancar kepada runtime baharu tersebut.
