Menjalankan TypeScript 7 dan ESLint Secara Berdampingan

TypeScript 7 menawarkan compiler native berbasis Go yang jauh lebih cepat. Namun, TypeScript 7.0 belum menyediakan programmatic Compiler API yang dibutuhkan oleh tools seperti typescript-eslint.

Solusi resminya adalah menjalankan TypeScript 6 dan 7 secara berdampingan menggunakan npm aliases.

Konfigurasi

Di pnpm-workspace.yaml:

catalog: typescript: npm:@typescript/typescript6@~6.0.0 'typescript-7': npm:typescript@~7.0.0

Kemudian tambahkan keduanya sebagai dependencies:

{ "devDependencies": { "typescript": "catalog:", "typescript-7": "catalog:" } }

Mengapa Ini Bekerja?

Module dan executable di-resolve melalui jalur berbeda:

  • typescript-eslint mengimpor module bernama typescript, yang diarahkan ke TypeScript 6.
  • Script yang menjalankan tsc mengambil binary milik TypeScript 7.

Package TypeScript 6 menyediakan binary tsc6, sedangkan TypeScript 7 menyediakan tsc:

node_modules/.bin/tsc6 -> TypeScript 6 node_modules/.bin/tsc -> TypeScript 7

Karena itu, script yang sudah ada tidak perlu diubah:

{ "typecheck": "tsc --noEmit" }

Command tersebut otomatis menggunakan TypeScript 7, sementara ESLint tetap menggunakan TypeScript 6 API.

Hasil

Dengan pendekatan ini:

  • ESLint berjalan stabil menggunakan TypeScript 6 API.
  • Build dan type-check menggunakan compiler TypeScript 7.
  • Tidak diperlukan perubahan pada source code maupun build scripts.
  • Alias TypeScript 6 dapat dilepas setelah tooling mendukung API TypeScript 7.

Referensi: TypeScript 7.0 announcement dan pnpm dependency aliases.

Suka artikel ini? Bagikan ke temanmu atau salin link-nya!

Artikel Serupa

TypeScript 5.8 dan Flag --erasableSyntaxOnly: Meningkatkan Kompatibilitas JavaScript dan Mempersiapkan Codebase untuk Masa Depan

TypeScript 5.8 memperkenalkan compiler flag --erasableSyntaxOnly yang dirancang untuk meningkatkan kompatibilitas dengan sistem tipe JavaScript yang terus berkembang. Flag ini membatasi penggunaan elemen syntax yang tidak bisa dihapus begitu saja, seperti enums, namespaces, dan parameter properties, yang membutuhkan transformasi saat runtime. Dengan begitu, pemisahan antara type annotations dan kode yang dieksekusi menjadi lebih bersih. Artikel ini membahas implikasi dari fitur ini, kesesuaiannya dengan proposal JavaScript terkini, serta potensi dampaknya terhadap praktik pengembangan TypeScript.

Membangun State Machine dengan XState dan Menggunakannya di Berbagai React Components (TypeScript)

Pelajari cara membangun state machine dengan XState dan menggunakannya di berbagai React components dalam TypeScript.

Perbandingan Lengkap Metode safeParse dan parse di Zod

Memahami perbedaan antara safeParse dan parse di Zod sangat penting untuk validasi data yang efektif di TypeScript. Artikel ini membahas perbedaan perilaku, kasus penggunaan, dan kapan harus memilih salah satunya untuk memastikan penanganan error yang kuat dan mudah diprediksi di aplikasi kamu.

Memahami Partial Type di TypeScript

Artikel ini membahas utility type `Partial` di TypeScript, mulai dari cara kerjanya, kapan sebaiknya digunakan, hingga penerapan praktisnya untuk mengelola optional properties secara efisien di berbagai skenario.