Leçons du module (1/2)
Configuration avec tsconfig.json
Le fichier tsconfig.json définit le répertoire racine du projet TypeScript et spécifie les options de compilation requises pour compiler le projet.
Lorsque vous exécutez tsc dans le dossier d'un projet, le compilateur recherche ce fichier pour comprendre comment se comporter.
Structure du fichier tsconfig.json
Un fichier de configuration typique ressemble à ceci :
{
"compilerOptions": {
"target": "es2022",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
Les clés principales sont :
compilerOptions: Les paramètres du compilateur.include: Les fichiers ou dossiers qui doivent être compilés.exclude: Les fichiers ou dossiers à ignorer lors de la compilation.
Options clés du compilateur
Voici les options les plus importantes à connaître :
target: Spécifie la version de JavaScript générée en sortie (ex.es5,es6/es2015,es2020,esnext).module: Spécifie le système de modules à utiliser dans la sortie (ex.commonjs,esnext,node16).strict: Active un large groupe de vérifications de types strictes. Il est fortement recommandé de le définir surtruepour maximiser la sécurité du code. Il active des options telles que :noImplicitAny: Génère une erreur si l'annotation de type est manquante pour des paramètres qui seraient sinon déduits commeany.strictNullChecks: Empêche l'assignation denullouundefinedà des types qui ne les prévoient pas explicitement dans leur union.
À vous de jouer
Exercice 1 : Gestion de strictNullChecks
Sous l'option strictNullChecks: true du fichier tsconfig.json, nous ne pouvons pas assigner null ou undefined à des types primitifs. Déclarez une fonction appelée parseAge qui accepte une entrée de type string | null et renvoie un number si l'entrée n'est pas nulle et est un entier valide, sinon elle renvoie 0. Gérez explicitement le cas null pour passer la compilation stricte.
Afficher l'indice
Vérifiez si l'entrée est null au début de la fonction et retournez immédiatement 0 avant de traiter la chaîne.
Solution disponible après 3 tentatives
Exercice 2 : Typage strict sans Implicit Any
Sous noImplicitAny: true, chaque paramètre dont le type ne peut pas être déduit doit être typé explicitement. Créez une fonction appelée processItems qui accepte un tableau items (tableau de nombres) et une fonction callback qui prend un seul nombre comme argument et ne renvoie rien. Assurez-vous de ne pas utiliser any et de tout typer explicitement.
Afficher l'indice
Déclarez la fonction avec la signature function processItems(items: number[], callback: (item: number) => void): void.
Solution disponible après 3 tentatives