Installation
Installation globale
npm i -g typescript
Pour vérifier que l'installation fonctionne, inscrivez :
tsc -v #5.4.x
Setup fichiers
Nous allons créer un dossier ts-course
et initialiser un projet TypeScript :
# mkdir ts-course
# cd ts-course
npm init # Vous pouvez tout valider
Ensuite installer vite
:
npm i vite
Créer un dossier public
et placez y un fichier index.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cours TypeScript</title>
<link rel="icon" type="image/x-icon" href="/favicon.ico">
</head>
<body>
<h1>TypeScript course</h1>
<script type="module" src="dist/script.js"></script>
</body>
</html>
Vous pouvez récupérer le favicon ici : favicon.ico
Créer un fichier vite.config.ts
:
export default {
root: 'public',
build : {
outDir: 'public/dist'
}
}
Créer un dossier src
. C'est ici que nous allons placer nos fichiers TypeScript.
Vous aurez les fichiers suivants :
- node_modules
- public
- index.html
- package-lock.json
- package.json
Fichier TypeScript
index.ts
Créer un fichier src/script.ts
:
const city: string = "Paris";
console.log(`hello ${city}`);
// export {} Décommentez si vous avez une erreur "TS2448: Block-scoped variable 'city' used before its declaration."
Nous allons maintenant compiler le code TypeScript en JavaScript:
tsc script.ts
Une fois effectué, un fichier au meme nom avec l’extension js est créé
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var city = "Paris";
console.log("Hello ".concat(city));
Par défaut, le compilateur TypeScript génère du code JavaScript ES3. Nous verrons plus tard commenr changer cela.
Explication
use strict
: Le code est exécuté en mode strict.Object.defineProperty(...)
: Génère un module compatible avec CommonJS.var
remplaceconst
car ES3 ne le supporte pas..concat
remplace${}
car ES3 ne le supporte pas.
Ajoutons
// script.ts
const city: string = "Paris";
const department: number = 75;
console.log(`Hello ${city}, department: ${department}`);
// export {}
Regardons le fichier généré, rien n'a changé 🤔
Afin que les modifications soient prises en compte, nous devons compiler le code à nouveau :
tsc script.ts
Super ça fonctionne ! 🎉
Pour que ce soit fait automatiquement, nous pouvons ajouter un watcher :
tsc script.ts --watch
En plus de l'éditeur de texte, c'est ici que nous verrons les erreurs de typage.
Le terminal n'est plus disponible, vous pouvez ouvrir un autre terminal pour continuer à travailler.
Le mode strict
Activer le mode strict
tsc script.ts --strict -w
Fichier de configuration
Plutot que de passer des options à chaque compilation, nous pouvons créer un fichier de configuration tsconfig.json
:
tsc --init
Cela va créer un fichier avec des options spécifiques.
Les paramètres qui nous intéressent pour l'instant sont :
target
: Version de JavaScript à générermodule
: Type de module à générer (EcmaScript ou CommonJS)outDir
: Dossier de destination- rootDir : Dossier source des fichier ts à compiler
strict
: Active le mode strict
Valeur à changer
{
"compilerOptions": {
"target": "ES2016", // Code moderne largement supporté
"module": "ES2022", // Module EcmaScript
"rootDir": "./src", // Dossier source
"outDir": "./public/dist", // Dossier de destination
},
"exclude": [
"node_modules",
"vite.config.ts"
]
}
Maintenant, dans le terminal faites :
tsc -w
- Vous pouvez supprimer le fichier
script.js
- Un nouveau fichier
dist/script.js
est créé - Le code qu'il contient est adapté à la version ES2016 avec les modules EcmaScript
const city = "Paris";
const department = 75;
console.log(`Hello ${city}, department: ${department}`);
export {};
Résumé
Vous devez avoir 3 terminaux ouverts :
- Un pour lancer le serveur Vite (watch)
- Un pour compiler le code TypeScript (watch)
- Un pour effectuer les différentes commandes
Vous avez un fichier script.ts
dans le dossier src
qui est compilé en dist/script.js
dans le dossier public
.
Pour la suite du cours, je vous recommande :
- de travailler dans le fichier
src/script.ts
- de copier / coller le code dans des fichiers relatifs aux exercices
- src
- script.ts # Fichier en cours
- /5-types-primitives
- exercice.ts
# ...
- /6-array-tuple
- exercice.ts
# ...
# ...