TypeScript 6.0 Merosakkan Secara Reka Bentuk
TypeScript 6.0 kini tiba dan ia mengubah segalanya. Versi ini merupakan anjakan paling ketara sejak versi 2.x. Jika anda bergantung pada tetapan lama (legacy), binaan (build) anda yang seterusnya berkemungkinan besar akan gagal.
Tiga perubahan utama akan merosakkan kod anda:
- Strict mode kini diaktifkan secara lalai.
- Sokongan ES5 dan ES3 telah tiada.
- Resolusi modul kini ditetapkan kepada ESNext secara lalai.
Mengapa ini penting:
Strict Mode Sebelum ini, anda perlu memilih untuk menggunakan strict mode. Sekarang, ia adalah standard. Kira-kira 70% pangkalan kod (codebase) akan mengalami kegagalan binaan (red builds) dengan serta-merta. Anda akan menghadapi ralat bagi sifat (properties) yang tidak diinisialisasi, jenis 'implicit any', dan nilai 'null' yang tidak disemak.
ES5 Support Removal Anda tidak lagi boleh menyasarkan ES5 atau ES3 dalam tsconfig.json anda. Tetapan lalai yang baharu ialah ES2025. Jika anda perlu menyokong pelayar web lama, anda mesti menambah alat berasingan seperti Babel ke dalam saluran kerja (pipeline) anda.
Module Resolution Tetapan lalai bukan lagi CommonJS. Ia kini adalah ESNext. Jika projek Node.js anda bergantung pada tingkah laku CommonJS secara tersirat (implicit), anda mesti menetapkan tetapan modul secara eksplisit dalam konfigurasi anda.
Cara untuk migrasi tanpa merosakkan saluran kerja (pipeline) anda:
Audit konfigurasi anda Jangan biarkan tetapan ditentukan secara kebetulan. Tambah nilai eksplisit untuk strict, target, dan module dalam tsconfig.json anda sebelum anda menaik taraf.
Kunci versi anda Tetapkan (pin) versi TypeScript anda dalam package.json. Uji binaan semasa anda pada versi sedia ada sebelum beralih ke 6.0.
Gunakan cawangan ciri (feature branch) Pasang TypeScript 6.0 pada cawangan baharu. Kemas kini sasaran (target) anda kepada ES2025 dan tetapkan jenis modul anda dengan jelas.
Baiki jenis (types) secara berperingkat Jalankan pengkompil (compiler) tanpa mengeluarkan (emitting) fail untuk melihat semua ralat. Fokus pada ralat strictNullChecks dan implicit any terlebih dahulu.
Uji segalanya Jalankan keseluruhan suite ujian anda. TypeScript mengesan ralat jenis, tetapi ujian anda mengesan ralat logik yang disebabkan oleh ketegasan (strictness) baharu ini.
TypeScript 6.0 adalah langkah terakhir sebelum penulisan semula versi 7.0. Versi 7.0 akan menggunakan teras asli Go (Go-native core). Ini bermakna sokongan legacy akan hilang sepenuhnya.
Modenkan pangkalan kod anda sekarang untuk mengelakkan krisis pada masa hadapan.
Sumber: https://dev.to/davekurian/typescript-60-launches-strict-mode-by-default-and-drops-es5-support-n31