Interface et type
Syntaxe courante
En TypeScript, les interfaces définissent la structure des objets en précisant les noms et les types des propriétés ou des méthodes qu’un objet doit posséder. La syntaxe courante pour définir une interface en TypeScript est la suivante :
interface InterfaceName { property1: Type1; // ... method1(arg1: ArgType1, arg2: ArgType2): ReturnType; // ...}De même, pour une définition de type :
type TypeName = { property1: Type1; // ... method1(arg1: ArgType1, arg2: ArgType2): ReturnType; // ...};interface InterfaceName ou type TypeName : définit le nom de l’interface.
property1 : Type1 : indique les propriétés de l’interface ainsi que leurs types correspondants. Plusieurs propriétés peuvent être définies, chacune étant séparée par un point-virgule.
method1(arg1: ArgType1, arg2: ArgType2): ReturnType; : indique les méthodes de l’interface. Les méthodes sont définies avec leur nom, suivi d’une liste de paramètres entre parenthèses et du type de retour. Plusieurs méthodes peuvent être définies, chacune étant séparée par un point-virgule.
Exemple d’interface :
interface Person { name: string; age: number; greet(): void;}Exemple de type :
type TypeName = { property1: string; method1(arg1: string, arg2: string): string;};En TypeScript, les types servent à définir la forme des données et à imposer la vérification des types. Il existe plusieurs syntaxes courantes pour définir les types en TypeScript, selon le cas d’utilisation précis. En voici quelques exemples :
Types de base
let myNumber: number = 123; // number typelet myBoolean: boolean = true; // boolean typelet myArray: string[] = ['a', 'b']; // array of stringslet myTuple: [string, number] = ['a', 123]; // tupleObjets et interfaces
const x: { name: string; age: number } = { name: 'Simon', age: 7 };Types union et intersection
type MyType = string | number; // Union typelet myUnion: MyType = 'hello'; // Can be a stringmyUnion = 123; // Or a number
type TypeA = { name: string };type TypeB = { age: number };type CombinedType = TypeA & TypeB; // Intersection typelet myCombined: CombinedType = { name: 'John', age: 25 }; // Object with both name and age properties