Typescript : comment étendre un type event à de nouvelles propiétés ?

Chaque langage de programmation possède ses propres règles et normes de codage. Le langage TypeScript hérite de plusieurs règles issues du langage JavaScript car c'est une surcouche. Mais il a également les siennes afin, notamment, d'utiliser le typage fort et d'obtenir une syntaxe plus proche de ce que l'on retrouve avec des langages qui utilisent le même typage, comme C++ ou encore C#. Parmi ces règles, il n'est pas possible de créer des classes qui vont hériter de ces types. Le mot-clé "extends", qui définit un héritage, est en effet réservé seulement aux classes et interfaces. Si vous souhaitez ajouter des propriétés à un type, il faut utiliser d'autres mécanismes.

Le langage TypeScript propose différents mécanismes pour gérer les types. Parmi ceux-ci, les types d'intersection permettent de créer un type qui fusionne plusieurs types. Grâce à ce mécanisme, vous pouvez créer votre propre type qui va reprendre les propriétés du type "Event".

//Déclarer votre propre type
type MonType = {
   monId: int; 
}
//Déclarez un type d'intersection qui va comprendre à la fois votre type et le type "Event"
type monEvent = Event & MonType;

//Si vous ne souhaitez ajouter qu'un seul attribut, vous pouvez raccourcir la notation en une seule ligne
type monEvent = Event &{monId: int};

La version 2.2 du langage a ajouté de nouvelles fonctionnalités. Les interfaces peuvent maintenant hériter des types. Vous pouvez donc créer une interface qui va hériter du type "Event" et lui ajouter des propriétés ou méthodes supplémentaires.

interface monEvent extends Event {
   monId: int; 
}

JavaScript