Enum

L'Enum, ou énumération, est un moyen de donner des noms plus conviviaux à des ensembles de valeurs numériques. Par exemple :

enum Direction {
  Up = 1,
  Down,
  Left,
  Right,
}

enum Color {
  Red = 1,
  Green,
  Blue,
}

Dans cet exemple, nous avons créé une énumération Color avec trois membres : Red, Green et Blue.

Interface

L'interface est un moyen puissant de définir des contrats au sein de votre code. Elle définit la syntaxe que les classes doivent suivre. Par exemple :

interface Point {
  x: number;
  y: number;
}

Héritage d'interface pour les méthodes avec convention de nommage i<Action>

En TypeScript, il est courant d'utiliser une convention de nommage pour les interfaces où le nom commence par un "i" suivi de l'action ou de l'entité que l'interface représente. Cela aide à distinguer rapidement les interfaces des autres types. Voici un exemple en utilisant cette convention :

interface iShape {
  draw(): void;
}

interface iCircle extends iShape {
  radius: number;
}

Dans cet exemple, l'interface iCircle hérite de la méthode draw() de l'interface iShape. Ainsi, toute classe qui implémente l'interface iCircle doit non seulement définir la propriété radius, mais aussi fournir une implémentation pour la méthode draw(). Cette convention de nommage contribue à rendre le code plus clair et plus facile à comprendre.

Héritage avec les interfaces

En TypeScript, les interfaces peuvent être utilisées pour définir l'héritage, ce qui permet de créer une interface qui hérite des membres d'une autre interface. Voici un exemple :

interface Point {
  x: number;
  y: number;
}

interface ThreeDPoint extends Point {
  z: number;
}

Dans cet exemple, ThreeDPoint hérite des propriétés x et y de Point, et introduit une nouvelle propriété z. Ainsi, une variable de type ThreeDPoint doit définir trois propriétés : x, y et z.

Type

Le Type permet de nommer un type quelconque, même s'il est complexe. Il est utile lorsque vous voulez réutiliser un type spécifique plusieurs fois et le nommer pour une meilleure lisibilité. Par exemple :

type Point = {
  x: number;
  y: number;
};

Voici un autre exemple de Type :