Skip to content

Pilihan tsconfig diterangkan

Pilihan tsconfig yang penting, dikelompokkan mengikut tugas: menguatkan semakan jenis, menetapkan sasaran bahasa dan modul, mengawal apa yang di-emit, memetakan laluan import, menstrukturkan binaan berbilang projek, dan menala semakan yang berbaki.

Sebuah tsconfig memberitahu compiler fail mana yang disertakan dan seberapa ketat semakannya. Dua pilihan melakukan kebanyakan kerja: target menetapkan aras penjanaan JavaScript, dan strict mengaktifkan semakan keselamatan sebagai satu pakej. Pilihan di bawah ialah yang mengubah tingkah laku; bendera lalai aktif ditandakan. Terbitkan konfigurasi anda daripada satu asas, kemudian batalkan hanya yang berbeza.

Jadual rujukan · 55 entri
55 of 55 rows
Keketatan
Suis utama: mengaktifkan strictNullChecks, noImplicitAny dan beberapa yang lain serentak.
Ralat pada parameter dan pemboleh ubah yang jenisnya tidak dapat disimpulkan (jika tidak akan menjadi any).
null dan undefined tidak lagi boleh diumpuk kepada semua jenis; anda memilih secara eksplisit.
Menyemak parameter fungsi secara kontravarian; menangkap jenis parameter callback yang tidak kukuh.
Semakan jenis bind, call dan apply terhadap parameter yang diisytiharkan oleh fungsi.
Ralat apabila sifat kelas tiada nilai awal dan tidak diumpuk dalam konstruktor.
Sifat pilihan { p?: T } tidak lagi menerima pengumpukan undefined secara eksplisit.
Mewajibkan kata kunci override pada ahli yang membayangi ahli kelas asas.
Ralat pada pemboleh ubah setempat yang diisytiharkan tetapi tidak pernah dibaca.
Ralat pada parameter fungsi yang diisytiharkan tetapi tidak pernah dibaca.
Ralat pada penyata ungkapan yang tiada kesan.
Akses titik dilarang bagi kunci index-signature; gunakan kurungan siku (obj["key"]).
Ralat apabila satu laluan kod memulangkan nilai tetapi laluan lain tidak.
Ralat apabila case switch jatuh ke case berikutnya tanpa break.
Bahasa dan modul
Aras penjanaan JavaScript (cth. ES2022); sasaran lebih baharu meng-emit kurang downleveling.
API terbina dalam yang tersedia (cth. ES2022, DOM, DOM.Iterable).
Sistem modul yang di-emit (cth. ESNext, CommonJS, NodeNext).
Menggunakan peraturan sebenar Node: setiap fail memilih CJS atau ESM daripada package.json terdekat, dan import relatif memerlukan sambungan fail.
Cara laluan import dileraikan (cth. bundler, node, nodenext).
Bila satu fail dikira sebagai modul: auto (mengikut kehadiran import/export), legacy, atau force (sentiasa).
Membenarkan gaya default-import daripada modul CommonJS (lalai true pada kebanyakan persediaan).
Membenarkan default import daripada modul yang hanya mengeksport nilai bernama (aras jenis sahaja).
Import di-emit tepat seperti yang ditulis; import khusus jenis mesti menggunakan import type (TS 5).
Membenarkan import memuatkan fail .json sebagai nilai berjenis.
Memasukkan fail .js sebagai input kompilasi.
Menyemak jenis fail .js juga, membaca komen JSDoc-nya; melibatkan allowJs.
Cara .tsx dikompil: react-jsx (runtime automatik), react (React.createElement), atau preserve.
Hadkan pakej @types yang dimuatkan secara automatik kepada senarai ini; tatasusunan kosong tidak memuatkan apa-apa.
Folder yang diimbas untuk pakej @types dan bukannya setiap node_modules/@types ke atas pokok.
Memastikan setiap fail boleh ditranspil secara berasingan (diperlukan oleh bundler dan esbuild).
Emit
Ke mana JavaScript terkompil ditulis.
Akar fail sumber; mengekalkan bentuk pokok output yang stabil.
Meng-emit fail .js.map supaya debugger memetakan kembali ke TypeScript.
Menyarikan source map sebagai komen di dalam fail .js dan bukannya fail .js.map.
Meng-emit pengisytiharan jenis .d.ts (diperlukan untuk pustaka).
Meng-emit fail .d.ts.map supaya editor melompat daripada pengisytiharan kembali ke sumber TypeScript.
Hanya meng-emit fail .d.ts; JavaScript diserahkan kepada bundler (memerlukan declaration atau composite).
Menggunakan semula pembantu seperti __rest daripada tslib dan bukannya menulisnya ke setiap fail.
Memperbetulkan for..of, spread dan destructuring atas iterable apabila sasaran mendahului ES2015.
Membuang komen daripada JavaScript yang di-emit.
Semakan jenis sahaja; tiada fail ditulis (digunakan apabila bundler melakukan emit).
Laluan
Direktori asas untuk peleraian modul bukan relatif.
Memetakan prefiks import kepada lokasi, cth. { "@/*": ["src/*"] }.
Menganggap beberapa direktori sebagai satu akar maya untuk peleraian.
Struktur projek
Menandai projek sebagai boleh dibina untuk project reference (mengaktifkan declaration, incremental).
Bergantung pada projek tsconfig lain untuk binaan lebih pantas dan terasing.
Menyimpan maklumat binaan untuk melangkau semakan semula fail yang tidak berubah pada kali seterusnya.
Semakan lain
Melangkau semakan jenis fail .d.ts demi kelajuan (lalai true).
Ralat pada import yang tidak sepadan dengan huruf besar-besaran sebenar fail.
Akses tatasusunan dan indeks memulangkan T | undefined, bukan T.
Medan kelas dicipta dengan Object.defineProperty dan bukannya pengumpukan biasa (lalai true untuk sasaran ES2022+).
Mengaktifkan sintaks decorator legasi yang digunakan oleh kerangka lama (pra-standard).
Melaporkan nama jenis penuh dalam mesej ralat dan bukannya memotong yang panjang.
Ralat apabila import kesan sampingan kosong (import "./x.css") tidak meleraikan kepada apa-apa.
Membenarkan laluan import berakhiran .ts (memerlukan noEmit atau emitDeclarationOnly).