Pratinjau TypeScript Native diumumkan
(devblogs.microsoft.com)- Pratinjau
tsgodari Project Corsa, proyek porting kompiler TypeScript ke native berbasis Go, telah dirilis melalui npm - Ini adalah pengumuman lanjutan terkait TypeScript 10x lebih cepat yang sempat menjadi pembahasan pada bulan Maret
- Dibandingkan
tscyang ada saat ini, proyek ini mencapai peningkatan kecepatan lebih dari 10x, serta mendukung file JS berbasis JSX dan JSDoc - Ekstensi Native Preview untuk VS Code juga telah dirilis, tetapi fitur seperti autocomplete dan find references masih dalam pengembangan
- API native baru dan language server berbasis LSP juga sedang disiapkan, bersama adopsi modul Node berbasis Rust, libsyncrpc
- Sebagian fitur masih belum diimplementasikan, dan ada perbedaan yang jelas antara TypeScript 7 (Corsa) dan versi 5.8 yang ada saat ini (Strada)
Ringkasan TypeScript Native Preview
- Pratinjau dari proyek porting native TypeScript (Corsa) yang diumumkan pada Maret 2025 kini telah tersedia
- Dibandingkan codebase lama berbasis JS (Strada),
tsgoyang ditulis dalam Go menunjukkan peningkatan performa lebih dari 10x pada proyek besar melalui paralelisme dan pemanfaatan shared memory tsgopada akhirnya direncanakan menggantikantsc, tetapi saat ini masih disediakan sebagai paket npm terpisahnpm install -D @typescript/native-preview npx tsgo --project ./src/tsconfig.json
Fitur ekstensi VS Code
-
Ekstensi “TypeScript (Native Preview)” untuk VS Code telah dirilis
-
Setelah instalasi, aktivasi perlu dilakukan melalui Command Palette atau pengaturan
"typescript.experimental.useTsgo": true -
Saat ini masih bergantung pada ekstensi lama dan fiturnya terbatas, tetapi akan terus ditingkatkan
Siklus rilis dan roadmap pengembangan
- Pratinjau ini ke depannya akan berkembang menjadi rilis resmi TypeScript 7
- Didistribusikan sebagai Nightly build dan akan diperbarui secara otomatis
- Sebagian fitur masih belum didukung:
--build,--declaration, emit untuk target yang lebih rendah- Fitur editor: autocomplete, find references, rename, dll.
Pembaruan utama
Peningkatan kelengkapan type checking
- Sebagian besar fitur type checking telah selesai di-porting
- Type checking untuk JSX serta JavaScript + JSDoc juga mulai didukung
- Karena beberapa perubahan yang disengaja dan perbedaan pada
lib.d.ts, error yang muncul bisa berbeda
Dukungan type checking JSX
- Pada awalnya JSX hanya bisa di-parse, tetapi sekarang sudah mendukung type checking penuh
- Contoh: pada proyek Sentry,
tscmemerlukan 72 detik, sedangkantsgohanya 6,7 detik, menghasilkan peningkatan kecepatan lebih dari 10xtsgo -p . --noEmit --extendedDiagnostics
Type checking file JavaScript
- Fitur untuk menganalisis file JS berbasis JSDoc juga telah diimplementasikan ulang dalam kode native
- Direfaktor dengan cara yang lebih modern dan konsisten dibanding pendekatan sebelumnya
- Beberapa pola lama mungkin tidak lagi dikenali
Fitur editor (berbasis LSP)
- Sedang ditulis ulang menjadi language server berbasis LSP sebagai pengganti TSServer lama
- Pada versi awal, tersedia fitur penanda error, go to definition, dan hover
- Baru-baru ini, fitur completion juga telah ditambahkan
Status pengembangan API
- Lapisan API berbasis IPC sedang diimplementasikan
- Hal ini memungkinkan komunikasi dengan proses TypeScript dari berbagai bahasa
- Untuk komunikasi sinkron di Node.js, diperkenalkan modul berbasis Rust libsyncrpc
- Desain API masih berada pada tahap awal dan sedang menerima masukan
Perbedaan dengan TypeScript saat ini
-
Karena sejumlah perbedaan konfigurasi, error dapat terjadi pada proyek yang sudah ada:
- Contoh:
--moduleResolution: node→ disarankan menggunakanbundlerataunodenext{ "compilerOptions": { "module": "preserve", "moduleResolution": "bundler" } }
- Contoh:
-
Perbedaan lainnya:
- JSX emit hanya bisa dipertahankan apa adanya
- declaration emit belum didukung
--buildbelum didukung- Layanan bahasa terkait project references masih belum lengkap
Rencana ke depan
- Menargetkan implementasi
--builddan sebagian besar fitur inti editor selesai pada akhir tahun ini - Perkembangan akan terus diperbarui melalui blog dan rilis nightly
3 komentar
Saya membangun dan menggunakannya langsung dengan LSP. Setelah beralih ke Go, penurunan penggunaan resource benar-benar terasa jelas.
Akhir-akhir ini yang sedang tren adalah cukup memindahkan js ke rust / go untuk meningkatkan performa
Saat melakukan refactoring, cukup sering parsing kode di sisi
tsservermelambat sehingga editor benar-benar macet total; semoga cepat dirilis supaya bisa terbebas dari penderitaan ini.