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.