Οι επιλογές tsconfig που μετράνε, ομαδοποιημένες ανά εργασία: αυστηροποίηση του ελέγχου τύπων, ορισμός στόχου γλώσσας και modules, έλεγχος του τι παράγεται, χαρτογράφηση διαδρομών import, δομή builds πολλαπλών projects και ρύθμιση των υπόλοιπων ελέγχων.
Ένα tsconfig λέει στον compiler ποια αρχεία να συμπεριλάβει και πόσο αυστηρός να είναι. Δύο επιλογές κάνουν το μεγαλύτερο μέρος της δουλειάς: το target ορίζει το επίπεδο παραγωγής JavaScript, και το strict ενεργοποιεί τους ελέγχους ασφαλείας ως σύνολο. Οι παρακάτω επιλογές είναι αυτές που αλλάζουν συμπεριφορά· οι επιλογές που είναι ενεργές από προεπιλογή σημειώνονται. Ξεκινήστε από μια βάση και μετά παρακάμψτε μόνο ό,τι διαφέρει.
Πίνακας αναφοράς · 55 καταχωρήσεις
Επιλογές tsconfigExplained
55 of 55 rows
Αυστηρότητα
Γενικός διακόπτης: ενεργοποιεί τα strictNullChecks, noImplicitAny και αρκετά άλλα μαζί.
Σφάλμα σε παραμέτρους και μεταβλητές των οποίων ο τύπος δεν μπορεί να συναχθεί (αλλιώς θα ήταν any).
Τα null και undefined δεν αναθέτονται πλέον σε κάθε τύπο· γίνονται δεκτά μόνο ρητά.
Ελέγχει τις παραμέτρους συναρτήσεων με αντίστροφη διακύμανση· εντοπίζει μη ασφαλείς τύπους παραμέτρων σε callbacks.
Ελέγχει τυπικά τα bind, call και apply ως προς τις δηλωμένες παραμέτρους της συνάρτησης.
Σφάλμα όταν μια ιδιότητα κλάσης δεν έχει αρχική τιμή και δεν αναθέτεται στον constructor.
Μια προαιρετική ιδιότητα { p?: T } δεν δέχεται πλέον ρητή ανάθεση undefined.
Απαιτεί τη λέξη-κλειδί override σε μέλη που σκιάζουν μέλος της βασικής κλάσης.
Σφάλμα σε δηλωμένες τοπικές μεταβλητές που δεν διαβάζονται ποτέ.
Σφάλμα σε δηλωμένες παραμέτρους συναρτήσεων που δεν διαβάζονται ποτέ.
Σφάλμα σε προτάσεις-εκφράσεις χωρίς αποτέλεσμα.
Η πρόσβαση με τελεία απαγορεύεται για κλειδιά index signature· χρησιμοποιήστε αγκύλες (obj["key"]).
Σφάλμα όταν μια διαδρομή κώδικα επιστρέφει τιμή αλλά μια άλλη όχι.
Σφάλμα όταν ένα case περνά στο επόμενο χωρίς break.
Γλώσσα και modules
Το επίπεδο παραγωγής JavaScript (π.χ. ES2022)· νεότεροι στόχοι σημαίνουν λιγότερο downleveling.
Τα ενσωματωμένα API που είναι διαθέσιμα (π.χ. ES2022, DOM, DOM.Iterable).
Το σύστημα modules που παράγεται (π.χ. ESNext, CommonJS, NodeNext).
Ακολουθεί τους πραγματικούς κανόνες του Node: κάθε αρχείο επιλέγει CJS ή ESM από το κοντινότερο package.json, και τα σχετικά imports χρειάζονται επεκτάσεις αρχείων.
Πώς επιλύονται οι διαδρομές import (π.χ. bundler, node, nodenext).
Πότε ένα αρχείο μετράει ως module: auto (κατά την ύπαρξη import/export), legacy ή force (πάντα).
Επιτρέπει στυλ default import από modules CommonJS (προεπιλογή true στα περισσότερα setups).
Επιτρέπει default imports από modules που εξάγουν μόνο επώνυμες τιμές (μόνο σε επίπεδο τύπων).
Τα imports παράγονται ακριβώς όπως γράφτηκαν· τα imports μόνο τύπων πρέπει να χρησιμοποιούν import type (TS 5).
Επιτρέπει στα imports να φορτώνουν αρχεία .json ως τυποποιημένες τιμές.
Συμπεριλαμβάνει αρχεία .js ως είσοδο στη μεταγλώττιση.
Ελέγχει τυπικά και τα αρχεία .js, διαβάζοντας τα σχόλια JSDoc τους· συνεπάγεται το allowJs.
Πώς μεταγλωττίζεται το .tsx: react-jsx (αυτόματο runtime), react (React.createElement) ή preserve.
Περιορίζει τα αυτόματα συμπεριλαμβανόμενα πακέτα @types σε αυτή τη λίστα· ένα κενό array δεν περιλαμβάνει κανένα.
Φάκελοι που σαρώνονται για πακέτα @types αντί για κάθε node_modules/@types πιο πάνω στο δέντρο.
Διασφαλίζει ότι κάθε αρχείο μπορεί να μεταγλωττιστεί απομονωμένα (απαιτείται από bundlers και esbuild).
Παραγωγή κώδικα
Πού γράφεται το μεταγλωττισμένο JavaScript.
Η ρίζα των αρχείων πηγής· κρατά σταθερό το σχήμα του δέντρου εξόδου.
Παράγει αρχεία .js.map ώστε οι debuggers να αντιστοιχίζουν πίσω στο TypeScript.
Ενσωματώνει το source map ως σχόλιο μέσα στο αρχείο .js αντί για αρχείο .js.map.
Παράγει δηλώσεις τύπων .d.ts (απαραίτητο για βιβλιοθήκες).
Παράγει αρχεία .d.ts.map ώστε οι editors να μεταπηδούν από τις δηλώσεις πίσω στην πηγή TypeScript.
Παράγει μόνο αρχεία .d.ts· το JavaScript μένει σε bundler (απαιτεί declaration ή composite).
Επαναχρησιμοποιεί βοηθητικά όπως το __rest από το tslib αντί να τα παράγει σε κάθε αρχείο.
Διορθώνει for..of, spread και destructuring πάνω σε iterables όταν το target προηγείται του ES2015.
Αφαιρεί τα σχόλια από το παραγόμενο JavaScript.
Μόνο έλεγχος τύπων· δεν γράφει αρχεία (χρησιμοποιείται όταν ένα bundler αναλαμβάνει την παραγωγή).
Διαδρομές
Ένας βασικός φάκελος για την επίλυση μη σχετικών modules.
Χαρτογραφεί προθέματα import σε τοποθεσίες, π.χ. { "@/*": ["src/*"] }.
Αντιμετωπίζει πολλούς φακέλους ως μία εικονική ρίζα για την επίλυση.
Δομή project
Χαρακτηρίζει το project ως κατάλληλο για build ώστε να χρησιμοποιηθεί σε project references (ενεργοποιεί declaration, incremental).
Εξαρτάται από άλλα projects tsconfig για γρηγορότερα, απομονωμένα builds.
Αποθηκεύει πληροφορίες build για να παραλείπει τα αμετάβλητα αρχεία στην επόμενη εκτέλεση.
Άλλοι έλεγχοι
Παραλείπει τον έλεγχο τύπων των αρχείων .d.ts για ταχύτητα (προεπιλογή true).
Σφάλμα σε imports που διαφωνούν με τα πραγματικά κεφαλαία/πεζά του ονόματος του αρχείου.
Η πρόσβαση σε πίνακες και ευρετήρια επιστρέφει T | undefined, όχι T.
Τα πεδία κλάσεων δημιουργούνται με Object.defineProperty αντί για απλή ανάθεση (προεπιλογή true για targets ES2022+).
Ενεργοποιεί την παλιά σύνταξη decorators που χρησιμοποιούν παλαιότερα frameworks (προ του προτύπου).
Αναφέρει ολόκληρα ονόματα τύπων στα μηνύματα σφάλματος αντί να περικόπτει τα μακριά.
Σφάλμα όταν ένα καθαρά side-effect import (import "./x.css") δεν επιλύεται σε τίποτα.
Επιτρέπει διαδρομές import που τελειώνουν σε .ts (απαιτεί noEmit ή emitDeclarationOnly).