Partie 1 : Démarrer un projet sur de bonnes bases
Partie 2 : Construire un espace membre sécurisé avec JWT
Partie 3 : Implémenter des fonctionnalités métiers
Partie 4 : Bonus

5.2. L’entité Task

Nous implémentons maintenant notre entité Task, en appliquant les mêmes principes que nous avons abordés précédemment :

export class Task {
 static readonly pomodoroLimit: number = 5; // nombre maximum de pomodoros
 completed: boolean; // tâche terminé ou non
 done: number; // nombre de pomodoros effectués
 title: string; // intitulé de la tâche
 todo: number; // nombre de pomodoros prévus

 constructor(options: {
  completed?: boolean,
  done?: number,
  title?: string,
  todo?: number
 } = {}) {
  this.completed = options.completed || false;
  this.done = options.done || 0;
  this.title = options.title || ‘’;
  this.todo = options.todo || 1;
 }
}

Là aussi, la classe est très simple, mais il y a une petite particularité concernant la propriété pomodoroLimit, à la ligne 2. J’utilise le mot-clé readonly que je viens de vous présenter, avec le mot-clé static, qui permet de déclarer une propriété statique pour notre objet. Pour rappel, il s’agit d’un terme propre à la programmation par objet, qui permet de définir une propriété rattachée à la classe Task, et non aux instances de cette classe. Concrètement, cela signifie que la propriété pomodoroLimit que j’ai défini n’est pas spécifique à une tâche, mais concerne toutes les tâches. En effet, le nombre maximum de pomodoros possibles par tâche est limité à cinq, quelle que soit la tâche. Ensuite, on pourra écrire quelque chose comme ça :

console.log(Task.pomodoroLimit); // affiche ‘5’

Dans l’exemple de code ci-dessus, Task désigne bien notre classe, et non une instance. Retenez simplement que vous pouvez définir des propriétés communes à toutes les instances d’une classe, grâce aux propriétés statiques.

Pourquoi il n’y a pas d’identifiant pour la classe Task ?

Comme nous le verrons juste après, nous allons rattacher nos tâches à une autre entité que sont les journées de travail (Workdays). Nous ne sauvegarderons jamais une tâche en tant que telle, car nous passerons forcément par une journée de travail pour y accéder. Nous n’avons donc pas besoin de lui attribuer un identifiant.