Skip to content

Opsi tsconfig dijelaskan

Opsi tsconfig yang penting, dikelompokkan per tugas: memperketat pemeriksaan tipe, mengatur target bahasa dan modul, mengontrol apa yang di-emit, memetakan path import, menstrukturkan build multi-proyek, dan menyetel pemeriksaan sisanya.

Sebuah tsconfig memberi tahu compiler file mana yang disertakan dan seberapa ketat pemeriksaannya. Dua opsi melakukan sebagian besar pekerjaan: target mengatur level pembuatan JavaScript, dan strict mengaktifkan pemeriksaan keamanan sebagai satu paket. Opsi di bawah ini adalah yang mengubah perilaku; flag yang aktif secara bawaan ditandai. Turunkan konfigurasi Anda dari sebuah basis, lalu timpa hanya yang berbeda.

Tabel referensi · 55 entri
55 of 55 rows
Keketatan
Saklar utama: mengaktifkan strictNullChecks, noImplicitAny, dan beberapa lainnya sekaligus.
Error pada parameter dan variabel yang tipenya tidak bisa disimpulkan (tanpa ini akan menjadi any).
null dan undefined tidak lagi bisa di-assign ke semua tipe; Anda harus memasukkannya secara eksplisit.
Memeriksa parameter fungsi secara kontravarian; menangkap tipe parameter callback yang tidak sehat.
Type-check bind, call, dan apply terhadap parameter yang dideklarasikan fungsi.
Error saat properti kelas tidak punya nilai awal dan tidak di-assign di constructor.
Properti opsional { p?: T } tidak lagi menerima assignment undefined eksplisit.
Mewajibkan kata kunci override pada member yang menimpa member kelas dasar.
Error pada variabel lokal yang dideklarasikan tapi tidak pernah dibaca.
Error pada parameter fungsi yang dideklarasikan tapi tidak pernah dibaca.
Error pada statement ekspresi yang tidak berpengaruh.
Akses titik dilarang untuk kunci index-signature; gunakan kurung siku (obj["key"]).
Error saat satu jalur kode mengembalikan nilai tetapi jalur lain tidak.
Error saat sebuah case switch jatuh ke case berikutnya tanpa break.
Bahasa dan modul
Level pembuatan JavaScript (mis. ES2022); target lebih baru meng-emit lebih sedikit downleveling.
API bawaan yang tersedia (mis. ES2022, DOM, DOM.Iterable).
Sistem modul yang di-emit (mis. ESNext, CommonJS, NodeNext).
Memakai aturan asli Node: tiap file memilih CJS atau ESM dari package.json terdekat, dan import relatif butuh ekstensi file.
Cara path import di-resolve (mis. bundler, node, nodenext).
Kapan sebuah file dihitung sebagai modul: auto (berdasarkan ada/tidaknya import/export), legacy, atau force (selalu).
Mengizinkan gaya default-import dari modul CommonJS (bawaan true di kebanyakan setup).
Mengizinkan default import dari modul yang hanya mengekspor nilai bernama (hanya di level tipe).
Import di-emit persis seperti ditulis; import khusus tipe harus memakai import type (TS 5).
Mengizinkan import memuat file .json sebagai nilai bertipe.
Memasukkan file .js sebagai input kompilasi.
Type-check file .js juga, membaca komentar JSDoc-nya; mengimplikasikan allowJs.
Cara .tsx dikompilasi: react-jsx (runtime otomatis), react (React.createElement), atau preserve.
Membatasi paket @types yang dimuat otomatis ke daftar ini; array kosong tidak memuat apa pun.
Folder yang dipindai untuk paket @types, menggantikan semua node_modules/@types ke atas pohon.
Memastikan setiap file bisa ditranspilasi secara terisolasi (diwajibkan bundler dan esbuild).
Emit
Ke mana JavaScript hasil kompilasi ditulis.
Akar file sumber; menjaga bentuk pohon output tetap stabil.
Meng-emit file .js.map agar debugger memetakan kembali ke TypeScript.
Menyematkan source map sebagai komentar di dalam file .js alih-alih file .js.map.
Meng-emit deklarasi tipe .d.ts (dibutuhkan untuk library).
Meng-emit file .d.ts.map agar editor melompat dari deklarasi kembali ke sumber TypeScript.
Hanya meng-emit file .d.ts; JavaScript diserahkan ke bundler (membutuhkan declaration atau composite).
Menggunakan ulang helper seperti __rest dari tslib alih-alih menuliskannya ke setiap file.
Memperbaiki for..of, spread, dan destructuring atas iterable saat target mendahului ES2015.
Menghapus komentar dari JavaScript yang di-emit.
Hanya type-check; tidak menulis file (dipakai saat bundler yang melakukan emit).
Jalur
Direktori dasar untuk resolusi modul non-relatif.
Memetakan prefiks import ke lokasi, mis. { "@/*": ["src/*"] }.
Memperlakukan beberapa direktori sebagai satu akar virtual untuk resolusi.
Struktur proyek
Menandai proyek sebagai dapat dibangun untuk project reference (mengaktifkan declaration, incremental).
Bergantung pada proyek tsconfig lain untuk build yang lebih cepat dan terisolasi.
Menyimpan info build agar eksekusi berikutnya melewati file yang tidak berubah.
Pemeriksaan lain
Melewati type-check file .d.ts demi kecepatan (bawaan true).
Error pada import yang tidak cocok dengan kapitalisasi asli file.
Akses array dan indeks mengembalikan T | undefined, bukan T.
Field kelas dibuat dengan Object.defineProperty alih-alih assignment biasa (bawaan true untuk target ES2022+).
Mengaktifkan sintaks decorator legacy yang dipakai framework lama (pra-standar).
Melaporkan nama tipe lengkap dalam pesan error alih-alih memotong yang panjang.
Error saat import side-effect polos (import "./x.css") tidak me-resolve apa pun.
Mengizinkan path import berakhiran .ts (membutuhkan noEmit atau emitDeclarationOnly).