Skip to content

Opzioni tsconfig spiegate

Le opzioni tsconfig che contano, raggruppate per funzione: rendere più severo il controllo dei tipi, impostare il target del linguaggio e i moduli, controllare cosa viene emesso, mappare i percorsi di import, strutturare build multi-progetto e regolare i controlli rimanenti.

Un tsconfig indica al compilatore quali file includere e quanto essere severo. Due opzioni fanno gran parte del lavoro: target imposta il livello di generazione del JavaScript, mentre strict attiva in blocco i controlli di sicurezza. Le opzioni qui sotto sono quelle che cambiano il comportamento; i flag attivi per impostazione predefinita sono segnalati. Deriva la tua config da una base, poi sovrascrivi solo ciò che differisce.

Tabella di riferimento · 55 voci
55 of 55 rows
Rigore
Interruttore principale: attiva strictNullChecks, noImplicitAny e diversi altri in una volta.
Errore su parametri e variabili il cui tipo non può essere dedotto (altrimenti sarebbero any).
null e undefined non sono più assegnabili a ogni tipo; li dichiari esplicitamente.
Controlla i parametri delle funzioni in modo controvariante; intercetta tipi di parametro di callback insicuri.
Controlla con i tipi bind, call e apply rispetto ai parametri dichiarati della funzione.
Errore quando una proprietà di classe non ha valore iniziale e non è assegnata nel costruttore.
Una proprietà opzionale { p?: T } non accetta più un'assegnazione undefined esplicita.
Richiede la parola chiave override sui membri che nascondono un membro della classe base.
Errore sulle variabili locali dichiarate e mai lette.
Errore sui parametri di funzione dichiarati e mai letti.
Errore sulle istruzioni espressione prive di effetto.
L'accesso con punto è vietato per le chiavi di index signature; usa le parentesi quadre (obj["key"]).
Errore quando un percorso di codice restituisce un valore e un altro no.
Errore quando un case dello switch ricade nel successivo senza break.
Linguaggio e moduli
Il livello di generazione del JavaScript (es. ES2022); i target più recenti richiedono meno downleveling.
Le API integrate disponibili (es. ES2022, DOM, DOM.Iterable).
Il sistema di moduli emesso (es. ESNext, CommonJS, NodeNext).
Usa le vere regole di Node: ogni file sceglie CJS o ESM dal package.json più vicino, e gli import relativi richiedono l'estensione del file.
Come vengono risolti i percorsi di import (es. bundler, node, nodenext).
Quando un file conta come modulo: auto (in base alla presenza di import/export), legacy oppure force (sempre).
Consente lo stile default-import dai moduli CommonJS (true per impostazione predefinita nella maggior parte delle configurazioni).
Consente i default import da moduli che esportano solo valori con nome (solo a livello di tipi).
Gli import vengono emessi esattamente come scritti; gli import di soli tipi devono usare import type (TS 5).
Permette agli import di caricare file .json come valori tipizzati.
Include i file .js come input della compilazione.
Controlla con i tipi anche i file .js, leggendo i loro commenti JSDoc; implica allowJs.
Come viene compilato .tsx: react-jsx (runtime automatico), react (React.createElement) oppure preserve.
Limita i pacchetti @types inclusi automaticamente a questo elenco; un array vuoto non include nulla.
Le cartelle in cui cercare i pacchetti @types invece di ogni node_modules/@types risalendo l'albero.
Garantisce che ogni file sia transpilabile in isolamento (richiesto da bundler ed esbuild).
Emissione
Dove viene scritto il JavaScript compilato.
La radice dei file sorgente; mantiene stabile la forma dell'albero di output.
Emette file .js.map così i debugger risalgono al TypeScript.
Incorpora la source map come commento dentro il file .js invece di un file .js.map.
Emette dichiarazioni di tipo .d.ts (necessarie per le librerie).
Emette file .d.ts.map così gli editor saltano dalle dichiarazioni al sorgente TypeScript.
Emette solo file .d.ts; il JavaScript è lasciato a un bundler (richiede declaration o composite).
Riusa helper come __rest da tslib invece di emetterli in ogni file.
for..of, spread e destructuring corretti sugli iterabili quando il target precede ES2015.
Rimuove i commenti dal JavaScript emesso.
Solo controllo dei tipi; nessun file scritto (usato quando l'emit lo fa un bundler).
Percorsi
Una directory base per la risoluzione dei moduli non relativi.
Mappa prefissi di import a percorsi, es. { "@/*": ["src/*"] }.
Tratta diverse cartelle come un'unica radice virtuale per la risoluzione.
Struttura del progetto
Marca un progetto come costruibile per i project reference (attiva declaration e incremental).
Dipende da altri progetti tsconfig per build più rapide e isolate.
Salva le informazioni di build per saltare alla prossima esecuzione i file invariati.
Altri controlli
Salta il controllo dei tipi dei file .d.ts per velocità (true per impostazione predefinita).
Errore sugli import che non rispettano le maiuscole/minuscole reali del file.
L'accesso ad array e indice restituisce T | undefined, non T.
I campi di classe vengono creati con Object.defineProperty invece di una semplice assegnazione (true per impostazione predefinita con target ES2022+).
Attiva la sintassi decorator legacy usata dai framework più vecchi (pre-standard).
Mostra i nomi dei tipi completi nei messaggi di errore invece di troncare i lunghi.
Errore quando un side-effect import senza legami (import "./x.css") non risolve a nulla.
Consente percorsi di import che terminano in .ts (richiede noEmit oppure emitDeclarationOnly).