Les options tsconfig qui comptent, regroupées par rôle : durcir la vérification des types, définir la cible du langage et les modules, contrôler ce qui est émis, mapper les chemins d'import, structurer les builds multi-projets et régler les vérifications restantes.
Un tsconfig indique au compilateur quels fichiers inclure et à quel point être strict. Deux options font l'essentiel du travail : target fixe le niveau de génération JavaScript, et strict active les vérifications de sûreté en bloc. Les options ci-dessous sont celles qui changent le comportement ; les drapeaux actifs par défaut sont signalés. Dérivez votre configuration d'une base, puis ne surchargez que ce qui diffère.
Tableau de référence · 55 entrées
Options tsconfigExplained
55 of 55 rows
Strictesse
Interrupteur maître : active strictNullChecks, noImplicitAny et plusieurs autres d'un coup.
Erreur sur les paramètres et variables dont le type ne peut pas être inféré (qui seraient sinon any).
null et undefined ne sont plus assignables à n'importe quel type ; leur usage devient un choix explicite.
Vérifie les paramètres de fonction de façon contravariante ; attrape les types de paramètres de callback non sûrs.
Vérifie bind, call et apply par rapport aux paramètres déclarés de la fonction.
Erreur quand une propriété de classe n'a pas de valeur initiale et n'est pas assignée dans le constructeur.
Une propriété optionnelle { p?: T } n'accepte plus l'assignation explicite de undefined.
Exige le mot-clé override sur les membres qui masquent un membre de la classe de base.
Erreur sur les variables locales déclarées mais jamais lues.
Erreur sur les paramètres de fonction déclarés mais jamais lus.
Erreur sur les instructions expression sans effet.
L'accès par point est interdit pour les clés de signature d'index ; utilisez des crochets (obj["key"]).
Erreur quand un chemin de code renvoie une valeur mais pas un autre.
Erreur quand un case retombe sur le suivant sans break.
Langage et modules
Le niveau de génération JavaScript (p. ex. ES2022) ; les cibles récentes produisent moins de code de compatibilité descendante.
Les API intégrées disponibles (p. ex. ES2022, DOM, DOM.Iterable).
Le système de modules émis (p. ex. ESNext, CommonJS, NodeNext).
Applique les vraies règles de Node : chaque fichier choisit CJS ou ESM selon le package.json le plus proche, et les imports relatifs exigent l'extension de fichier.
Comment les chemins d'import sont résolus (p. ex. bundler, node, nodenext).
Comment un fichier compte comme un module : auto (par présence d'import/export), legacy, ou force (toujours).
Autorise les imports par défaut depuis les modules CommonJS (true par défaut dans la plupart des configurations).
Autorise les imports par défaut depuis les modules qui n'exportent que des valeurs nommées (au niveau des types uniquement).
Les imports sont émis exactement tels qu'écrits ; les imports de types doivent utiliser import type (TS 5).
Laisse les imports charger des fichiers .json comme valeurs typées.
Inclut les fichiers .js comme entrées de la compilation.
Vérifie aussi les types des fichiers .js en lisant leurs commentaires JSDoc ; implique allowJs.
Comment le .tsx est compilé : react-jsx (runtime automatique), react (React.createElement), ou preserve.
Restreint les paquets @types inclus automatiquement à cette liste ; un tableau vide n'en inclut aucun.
Dossiers parcourus pour les paquets @types, au lieu de tous les node_modules/@types remontant l'arbre.
Garantit que chaque fichier peut être transpilé isolément (requis par les bundlers et esbuild).
Émission
Où le JavaScript compilé est écrit.
La racine des fichiers sources ; garde la forme de l'arbre de sortie stable.
Émet des fichiers .js.map pour que les débogueurs remappent vers le TypeScript.
Intègre la source map en commentaire dans le fichier .js au lieu d'un fichier .js.map.
Émet des déclarations de types .d.ts (nécessaire pour les bibliothèques).
Émet des fichiers .d.ts.map pour que les éditeurs reviennent des déclarations au source TypeScript.
N'émet que des fichiers .d.ts ; le JavaScript est laissé à un bundler (exige declaration ou composite).
Réutilise des helpers comme __rest depuis tslib au lieu de les émettre dans chaque fichier.
Corrige for..of, spread et déstructuration sur les itérables quand la cible précède ES2015.
Retire les commentaires du JavaScript émis.
Vérifie les types uniquement ; n'écrit aucun fichier (utilisé quand un bundler fait l'émission).
Chemins
Un répertoire de base pour la résolution des modules non relatifs.
Mappe des préfixes d'import vers des emplacements, p. ex. { "@/*": ["src/*"] }.
Traite plusieurs répertoires comme une seule racine virtuelle pour la résolution.
Structure du projet
Marque un projet comme constructible pour les références de projet (active declaration, incremental).
Dépend d'autres projets tsconfig pour des builds plus rapides et isolés.
Sauvegarde les infos de build pour éviter de revérifier les fichiers inchangés au prochain passage.
Autres vérifications
Passe la vérification des fichiers .d.ts pour la vitesse (true par défaut).
Erreur sur les imports dont la casse contredit le nom réel du fichier.
L'accès à un tableau ou à un index renvoie T | undefined, pas T.
Les champs de classe sont créés avec Object.defineProperty au lieu d'une simple assignation (true par défaut pour les cibles ES2022+).
Active la syntaxe legacy des décorateurs utilisée par les anciens frameworks (antérieure à la norme).
Affiche les noms de types complets dans les messages d'erreur au lieu de tronquer les longs.
Erreur quand un import de seul effet (import "./x.css") ne résout vers rien.
Autorise les chemins d'import finissant par .ts (exige noEmit ou emitDeclarationOnly).