Ceci est une ancienne révision du document !
TD JS-TS
- Revoir les concepts fondamentaux de JavaScript avant d'aborder React/Next.js.
- Pratiquer la manipulation des tableaux, objets et l'asynchronisme.
- Introduire TypeScript progressivement en montrant ses avantages.
Partie 1 : Rappel des Bases de JavaScript
Exercice 1 : Portée des Variables
Objectif : Comprendre la différence entre var, let et const.
function testScope() {
if (true) {
var a = "var variable";
let b = "let variable";
const c = "const variable";
}
console.log(a); // Que se passe-t-il ici ?
console.log(b); // Et ici ?
console.log(c); // Et ici ?
}
testScope();
Question : Pourquoi certaines variables provoquent-elles une erreur ?
Exercice 2 : Fonctions d'Ordre Supérieur
Objectif : Utiliser map, filter et reduce pour manipuler des tableaux.
const students = [
{ name: "Alice", grade: 15 },
{ name: "Bob", grade: 9 },
{ name: "Charlie", grade: 18 }
];
- Créer un tableau contenant uniquement les noms des étudiants
- Filtrer les étudiants ayant une note supérieure ou égale à 10
- Calculer la moyenne des notes
- Ecrire ces fonctions avec des fonctions fléchées.
Exercice 3 : Asynchronisme
Objectif : Pratiquer fetch et async/await.
async function fetchUsers() {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/users');
if (!response.ok) {
throw new Error('Erreur lors de la récupération des utilisateurs');
}
const users = await response.json();
console.log(users);
} catch (error) {
console.error(error.message);
}
}
fetchUsers();
Questions : Pourquoi await doit-il être utilisé dans une fonction async ? Comment gérer les erreurs de récupération des données ?
Partie 2 : Introduction à TypeScript
Exercice 4 : Ajout de Types
Objectif : Convertir un code JavaScript en TypeScript en ajoutant des types.
function greet(name: string, age: number): string {
return `Bonjour ${name}, tu as ${age} ans.`;
}
console.log(greet("Alice", 25));
Question : Que se passe-t-il si on passe un nombre à la place d'une chaîne de caractères pour name ?
Exercice 5 : Interfaces et Types
Objectif : Définir des types pour mieux structurer les données.
interface Student {
name: string;
grade: number;
}
const student: Student = { name: "Alice", grade: 15 };
console.log(student);
Bonus : Créer un tableau de Student et réutiliser les mêmes fonctions d'ordre supérieur en TypeScript.
Exercice 6 : Classes en TypeScript
Objectif : Introduire les classes avec TypeScript.
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
introduce(): string {
return `Je m'appelle ${this.name} et j'ai ${this.age} ans.`;
}
}
const alice = new Person("Alice", 25);
console.log(alice.introduce());
Question : Que se passe-t-il si on oublie d'initialiser name ou age dans le constructeur ?