Skip to article
detaEN ↗
← Kembali ke beranda

Menjalankan TypeScript 7 dan ESLint Secara Berdampingan

Cara menjalankan compiler native TypeScript 7 untuk build dan type-check, sambil mempertahankan TypeScript 6 agar ESLint tetap memiliki akses ke Compiler API yang dibutuhkannya.

1 menit baca
#TypeScript#ESLint#pnpm#Compiler

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:

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

Kemudian tambahkan keduanya sebagai dependencies:

json
{ "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:

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

Karena itu, script yang sudah ada tidak perlu diubah:

json
{ "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.

Tulisan lainnya

Beberapa catatan lain dari arsipku.

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.

Tinggalkan komentar