Kolom Tekno

Upgrade TypeScript 7 Bikin Alat Pengembangan Error, Developer Indonesia Wajib Tahu Solusinya

Ringkasan

  • Upgrade TypeScript 7 menyebabkan error pada ESLint, ts-jest, dan ts-morph karena API programatik belum stabil.
  • Developer Indonesia wajib tahu solusi side-by-side dan kapan upgrade aman.

Developer Indonesia yang baru saja meng-upgrade TypeScript 7 ke versi terbaru mendapati bahwa alat pengembangan populer seperti ESLint, ts-jest, dan ts-morph tiba-tiba error. Masalah ini muncul bukan karena kesalahan konfigurasi, melainkan karena perubahan mendasar pada mesin type‑checker TypeScript. Pada versi 7, tim TypeScript memperkenalkan **tsgo**, sebuah port Go yang disebut Project Corsa. Port ini dirancang untuk mempercepat build hingga 10 kali lipat dengan memanfaatkan thread OS, bukan event loop Node.js. Sayangnya, API programatik yang digunakan oleh banyak tools belum stabil hingga versi 7.1 dirilis.

Latar belakang kejadian ini bermula dari keputusan TypeScript untuk memindahkan compiler dari kode JavaScript lama (Strada) ke Go (Corsa). Meskipun perilaku type‑checking tetap identik, tools seperti typescript-eslint, ts-jest, dan ts-morph bergantung pada API internal Strada yang belum diekspos oleh Corsa. Akibatnya, developer mengalami error seperti “TypeError: Cannot read properties of undefined (reading 'Cjs')” saat menjalankan ESLint, transformasi test file terhenti pada ts-jest, atau output AST yang subtly salah pada ts-morph.

Dampak bagi ekosistem pengembangan di Indonesia cukup signifikan. Banyak startup lokal seperti Gojek, Tokopedia, dan Bukalapak mengandalkan CI pipelines yang mengintegrasikan TypeScript dengan ESLint untuk menjaga kualitas kode. Ketika TypeScript 7 dipaksa replace di node_modules, npm sering menolak instalasi typescript-eslint karena range peer dependency hanya mengizinkan versi di bawah 6.1.0, sehingga terjadi ERESOLVE error. Di sisi lain, developer yang memaksa instalasi melihat ESLint crash di dalam typescript-estree, sementara ts-jest gagal melakukan transformasi test files. Masalah ini tidak hanya mengganggu tim pengembangan di Jakarta, Bandung, atau Surabaya, tetapi juga berpotensi menghambat peluncuran fitur baru karena CI menjadi merah tanpa penyebab yang jelas.

"Ketika TypeScript 7 muncul, saya berharap upgrade ini lancar, tetapi CI langsung error dan saya bingung mencari penyebabnya," kata Andi, seorang frontend engineer di sebuah agensi digital Bandung. "Setelah membaca dokumentasi, saya tahu ini masalah API yang belum stabil, bukan kesalahan konfigurasi kami."

Solusi praktis yang disarankan adalah pola **side‑by‑side**. Developer dapat mempertahankan TypeScript versi 6.x di node_modules untuk tools yang belum kompatibel, lalu menginstal `@typescript/native-preview` sebagai kompiler cepat untuk perintah manual seperti `tsgo --noEmit`. Dengan konfigurasi ini, CI bisa menjalankan type‑check cepat di awal pipeline, sementara build penuh masih menggunakan TypeScript 6.x. Contoh minimal `tsconfig.json` bisa mempertahankan pengaturan default, tetapi script package.json dibagi menjadi `typecheck:fast` (tsgo) dan `build` (tsc). Pendekatan ini memungkinkan tim tetap memanfaatkan kecepatan tsgo tanpa mengorbankan kompatibilitas alat pengembangan.

Ke depannya, TypeScript 7.1 akan membawa API programatik yang stabil, sehingga developer bisa melakukan upgrade penuh tanpa perlu side‑by‑side. Bagi tim yang tidak menggunakan typescript-eslint, ts-morph, atau transformer kustom, dan hanya menjalankan `tsc` biasa, upgrade ke 7.0 bisa dilakukan segera setelah GA. Namun, bagi sebagian besar tim di Indonesia yang mengandalkan ekosistem lengkap ESLint dan ts-jest, menunggu 7.1 dan menerapkan solusi sementara adalah langkah bijak.

Secara keseluruhan, kasus ini menunjukkan pentingnya mengikuti release notes dan menguji upgrade di lingkungan staging sebelum diterapkan ke produksi. Komunitas TypeScript lokal, baik di Discord, Telegram, maupun meetup, bisa menjadi sumber pengetahuan untuk berbagi pola side‑by‑side dan mengantisipasi perubahan API di masa depan. Dengan demikian, developer Indonesia tetap bisa memanfaatkan kecepatan TypeScript 7 tanpa terganggu error yang tidak perlu.

Mengapa Ini Penting

Banyak startup Indonesia bergantung pada CI pipelines yang mengintegrasikan TypeScript dengan ESLint dan ts-jest. Upgrade ke TypeScript 7 tanpa persiapan dapat menyebabkan downtime dan kerugian produktivitas. Pemahaman tentang solusi side‑by‑side memungkinkan tim tetap menggunakan kecepatan tsgo sambil menunggu stabilitas API di 7.1, sehingga menghindari gangguan peluncuran produk. Selain itu, kasus ini mengajarkan pentingnya pengujian upgrade di lingkungan staging sebelum produksi, sebuah praktik yang dapat meningkatkan ketahanan pengembangan perangkat lunak di ekosistem lokal.

Sumber Asli
Dev.to
Tanggal
15 Juli 2026
Waktu Baca
4 menit