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.