Introduction à TypeScript
Améliorez votre code JavaScript avec la puissance du typage
Notions théoriques
TypeScript ajoute des types statiques au code JavaScript, ce qui améliore :
- la lisibilité,
- la maintenabilité
- et la robustesse des applications.
Contrairement à JavaScript, TypeScript est compilé avant d'être exécuté, ce qui permet de détecter des erreurs de typage avant même l'exécution du code.
1. Avantages de TypeScript
- Détecte les erreurs de type AVANT l'exécution
- Améliore l'autocomplétion des IDE
- Facilite le travail en équipe sur des gros projets
2. Concepts clés
-
Annotations de type :
let age: number = 25;
-
Interfaces :
interface User {
name: string;
id: number;
} -
Enums (énumérations) :
enum Direction {
Up = "UP",
Down = "DOWN"
} -
Génériques (pour créer des composants réutilisables) :
function identity<T>(arg: T): T {
return arg;
}
3. Compilation
Le code TypeScript .ts
est compilé en JavaScript standard .js
via la commande :
tsc monfichier.ts
Exemple simple
En JavaScript, une variable peut changer de type :
let variable = "Hello";
variable = 42; // Pas d'erreur
En TypeScript, on peut restreindre cela :
let message: string = "Hello";
// message = 42; // Erreur : le type attendu est "string"
Exemple d'une fonction
Créons une fonction simple qui prend deux nombres, les additionne, et retourne le résultat.
Avec TypeScript, nous allons ajouter des types pour assurer que les paramètres sont toujours des nombres.
Code TypeScript
// Déclare une fonction qui additionne deux nombres
function addition(a: number, b: number): number {
return a + b;
}
// Appel de la fonction
const resultat = addition(5, 10);
console.log(`Le résultat est : ${resultat}`);
Explications
a: number
etb: number
signifient que les paramètres doivent être de typenumber
.: number
après la parenthèse indique que la fonction retourne un nombre.- Si vous essayez d’appeler
addition("5", 10)
, TypeScript vous avertira d’une erreur.
Exemple pratique
Créons une interface utilisateur simple et une fonction pour vérifier si le mot de passe est assez long.
// Définir une interface utilisateur
interface User {
username: string;
password: string;
age?: number; // Propriété optionnelle
}
// Fonction de vérification
function checkUser(user: User): boolean {
return user.password.length >= 8;
}
// Utilisation
const newUser: User = {
username: "Marc",
password: "12345678"
};
console.log(checkUser(newUser)); // true
Étapes :
- Installer TypeScript :
npm install -g typescript
- Créer un fichier .ts
- Compiler avec
tsc
- Exécuter le .js généré
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Vous allez créer un programme TypeScript pour gérer une liste de tâches.
Chaque tâche sera un objet ayant les propriétés suivantes :
titre
: un texte décrivant la tâche (typestring
).fait
: un booléen indiquant si la tâche est terminée ou non (typeboolean
).
Étapes à suivre
- Déclarez une interface
Tache
avec les propriétéstitre
etfait
. - Créez un tableau de tâches initial contenant trois objets conformes à l'interface.
- Ajoutez une fonction
ajouterTache
pour ajouter une nouvelle tâche à la liste. - Ajoutez une fonction
marquerCommeFait
pour marquer une tâche comme terminée. - Affichez les tâches dans la console.
Exemple attendu
interface Tache {
titre: string;
fait: boolean;
}
const listeTaches: Tache[] = [
{ titre: "Faire les courses", fait: false },
{ titre: "Apprendre TypeScript", fait: true },
{ titre: "Nettoyer la maison", fait: false },
];
function ajouterTache(titre: string): void {
listeTaches.push({ titre, fait: false });
}
function marquerCommeFait(index: number): void {
if (listeTaches[index]) {
listeTaches[index].fait = true;
}
}
// Exemple d'utilisation
ajouterTache("Lire un livre");
marquerCommeFait(0);
console.log(listeTaches);
Une solution
Vous devez être connecté pour voir le contenu.
Variante du TP
Implémenter une version modifiée de la fonction marquerCommeFait()
pour qu’elle reçoive le titre de la tâche au lieu de son index.
La fonction cherchera dans la liste des tâches la tâche correspondante par son titre et la marquera comme terminée.
Une solution de la variante
Vous devez être connecté pour voir le contenu.
TP avancé
Objectif : Implémenter un système de gestion de jeux avec :
-
Une interface
JeuVideo
avec :- titre (string)
- genre (enum : Action, RPG, Sport)
- note (number optionnel)
-
Une fonction
ajouterNote()
pour donner une note au jeu,La fonction doit vérifier que la note est entre 0 et 20.
-
Compiler et tester avec des données exemple
Une solution du TP avancé
Vous devez être connecté pour voir le contenu.