๐ Fitur Baru & Peningkatan Bahasa
1. Inferensi Tipe yang Lebih Cerdas pada Fungsi this-less
Salah satu peningkatan kualitas hidup developer di versi ini adalah perbaikan pada cara TypeScript menyimpulkan tipe pada metode objek.
Sebelumnya, jika Anda menggunakan sintaks method shorthand (tanpa arrow function), TypeScript sering gagal menyimpulkan tipe secara benar jika urutan properti objek diacak. Hal ini karena TypeScript mengasumsikan keberadaan parameter this implisit membuat fungsi tersebut "kontekstual".
Di TS 6.0, jika tubuh fungsi tidak pernah menggunakan this, TypeScript tidak akan menganggapnya sebagai fungsi yang sensitif terhadap konteks. Hasilnya? Inferensi tipe menjadi jauh lebih akurat terlepas dari urutan penulisan kode.
2. Dukungan Subpath Imports #/
Node.js modern kini mendukung subpath imports yang dimulai dengan #/, dan TypeScript mengikutinya. Ini memungkinkan alias impor internal yang lebih bersih.
package.json:
Penggunaan:
3. Tipe API Modern: Temporal, RegExp.escape, dan Map Upsert
TS 6.0 memperbarui standard library untuk menyelaraskan dengan standar ECMAScript terbaru (es2025):
- Temporal API: Tipe bawaan untuk API
Temporal(Stage 4) kini tersedia untuk penanganan tanggal/waktu yang lebih baik tanpa polyfill eksternal. - RegExp.escape: Fungsi baru untuk menghindari karakter khusus regex secara otomatis.
- Map.getOrInsert: Metode baru (Stage 4) pada
MapdanWeakMapuntuk menyederhanakan pola "check-then-set".
4. Penggabungan Lib dom
Anda tidak perlu lagi menulis ["dom", "dom.iterable"] di konfigurasi lib. Semua fitur iterasi DOM kini digabung ke dalam dom secara default.
โ๏ธ Perubahan Default: Lebih Ketat & Modern
TypeScript 6.0 mengubah default values dari beberapa opsi tsconfig agar mencerminkan ekosistem JavaScript modern. Bagi banyak proyek, ini akan terasa seperti mengaktifkan mode strict secara otomatis.
| Opsi | Default Lama (5.9) | Default Baru (6.0) |
|---|---|---|
strict | false | true |
target | ES3 | ES2025 |
module | CommonJS (bervariasi) | ES2022 (tergantung target) |
moduleResolution | node10 | bundler |
Dampak Besar pada Konfigurasi
Ada dua perubahan default yang paling mungkin memecahkan build Anda saat upgrade:
-
typesdefault-nya sekarang[](Kosong) Sebelumnya, TypeScript memuat semua@typesyang ditemukan dinode_modules. Sekarang, Anda harus secara eksplisit mendefinisikannya. Ini meningkatkan performa kompilasi hingga 20-50%.Solusi: Tambahkan ini ke
tsconfig.json: -
rootDirdefault-nya sekarang.(Lokasi tsconfig) Sebelumnya,rootDirdiinferensi secara otomatis dari struktur file. Sekarang defaultnya adalah folder di manatsconfig.jsonberada.Masalah: Jika struktur Anda
src/index.tsdantsconfig.jsonada di root, output mungkin akan menjadidist/src/index.js(bersarang).Solusi: Set eksplisit:
๐ง Breaking Changes & Deprecations (Persiapan TS 7.0)
Karena TypeScript 7.0 akan ditulis ulang di Go, banyak fitur lama yang membebani performa atau sudah usang akan dihapus. Di TS 6.0, fitur-fitur ini ditandai sebagai deprecated dan akan berhenti bekerja total di TS 7.0.
Opsi yang Tidak Lagi Didukung (Deprecated)
Jika Anda masih menggunakan opsi berikut, Anda harus mulai migrasi:
target: es5&es3: Era IE sudah berakhir. Gunakan minimalES2015.module: amd,umd,system: GunakanESNext,nodenext, atau bundler.moduleResolution: node/node10: Beralihlah kenode16/nodenextataubundler.baseUrl: Opsi ini sering menyebabkan kebingungan resolusi modul. Ganti penggunaannya dengan inisialisasi path yang eksplisit dipathsatau hapus jika tidak perlu.outFile: Penggabungan file sebaiknya ditangani oleh bundler (Vite, Webpack, esbuild), bukan compiler TypeScript.
Perubahan Sintaksis
- Namespace: Menggunakan kata kunci
moduleuntuk deklarasi namespace sekarang error. Gunakannamespace. - Import Attributes: Sintaks
assert { }pada import diganti menjadiwith { }sesuai standar ECMAScript terbaru.
๐ ๏ธ Panduan Migrasi Cepat
Jika Anda berencana untuk melakukan upgrade, silakan ikuti langkah-langkah berikut๏ผ
-
Update Dependencies:
-
Update
tsconfig.json: Pastikan Anda menambahkan konfigurasi berikut untuk menghindari error: -
Gunakan Tool Migrasi Otomatis: Tim TypeScript menyediakan tool eksperimental
ts5to6untuk menangani perubahanbaseUrldanrootDirsecara otomatis: -
Tangani Deprecation: Jika Anda kewalahan dengan warning deprecation dan ingin menundanya sebentar, Anda bisa menggunakan "escape hatch" (ini tidak akan bekerja di TS 7.0):
๐ฎ Melangkah ke TypeScript 7.0
TypeScript 6.0 adalah fondasi yang kokoh. Dengan mengadopsi versi ini, Anda membersihkan kodebase dari fitur-fitur usang dan menyesuaikan diri dengan default modern yang lebih aman dan cepat.
Langkah selanjutnya? Cobalah Native Preview dari TypeScript 7.0 yang sudah tersedia. Dengan arsitektur Go-nya, janji performa type-checking yang jauh lebih cepat (terutama untuk monorepo besar) sudah di depan mata.
Selamat berkoding dengan TypeScript 6.0!
Referensi: Microsoft DevBlog, GitHub Gist, dan Diskusi Komunitas TypeScript.
