TypeScriptLeçon 16 sur 16
Mini-projet : un gestionnaire de tâches typé
La dernière leçon réunit tout : une interface, une union de littéraux, des types utilitaires et une classe à état privé. Le squelette est prêt, il reste trois méthodes à écrire.
L’essentiel
- Priority est une union de littéraux, pas un enum.
- readonly id ne peut plus changer une fois la tâche créée.
- NewTask = Omit<Task, "id" | "done"> : ces champs sont remplis par le gestionnaire.
- Record<Priority, number> fixe l'ordre de tri et n'oublie aucune priorité.
- private tasks : de l'extérieur, la liste ne change qu'à travers les méthodes.
Exemple
type NoteStatus = "todo" | "done"; interface Note { readonly id: number; text: string; status: NoteStatus;} class NoteBook { private notes: Note[] = []; add(text: string): Note { const note: Note = { id: this.notes.length + 1, text, status: "todo" }; this.notes.push(note); return note; } finish(id: number): void { const note = this.notes.find((item) => item.id === id); if (note) note.status = "done"; } count(status: NoteStatus): number { return this.notes.filter((note) => note.status === status).length; }} const book = new NoteBook();book.add("Buy milk");book.add("Call Sam");book.finish(1);console.log(`todo: ${book.count("todo")}, done: ${book.count("done")}`);L'exemple est une version réduite du projet : des notes avec un statut, un tableau privé et une méthode de comptage. L'exercice ajoute le tri par priorité et les statistiques.
Exercice
Utiliser l’éditeur⌘ Entrée ou Ctrl Entrée lance le code, ⇧ ⌘ Entrée vérifie l’exercice.Tab et Maj Tab indentent la ligne ou la sélection ; Échap puis Tab quitte l’éditeur.La vérification compare ce que le programme a affiché à l’exercice ; les espaces en fin de ligne ne comptent pas.Après deux vérifications ratées, la solution s’ouvre. Votre code reste dans ce navigateur.Complétez complete, pending et stats. Sortie : « Complete #2: true », « Complete #9: false », puis les tâches ouvertes par priorité — « [high] Review PR », « [medium] Write README », « [low] Update icons » — et « Done: 1, open: 3 ».
Sortie
Ce que le programme affiche apparaîtra ici.