TypeScript
11 - Interfaces

Les interfaces

Une interface en TypeScript est une façon de définir un type nommé qui dicte la structure d'un objet. Cela inclut les noms des propriétés, les types de valeurs qu'elles doivent contenir, et si ces propriétés sont optionnelles ou requises.

interface User {
    name: string;
    age?: number;  // Propriété optionnelle
}
 
function registerUser(user: User): void {
    console.log(`User registered: ${user.name}`);
}
 
registerUser({ name: "Alice", age: 25 });  // Valide
registerUser({ name: "Bob" });  // Valide car age est optionnel
registerUser({ name: "Charlie", age: "30" });  // Erreur de type
registerUser({ age: 30 });  // Invalide car name est requis

Etendre une interface

interface Person {
    name: string;
    age: number;
}
 
interface Employee extends Person {
    department: string;
    company: string;
}
 
const employee: Employee = {
    name: "Charlie",
    age: 28,
    department: "HR"
    company: "ACME"
};
 
console.log(`Employee details: ${employee.name} works in ${employee.department}, ${employee.company}.`);

Interface pour les fonctions

Les interfaces peuvent aussi être utilisées pour définir le type d'une fonction, spécifiant les types de ses paramètres et de sa valeur de retour.

interface SearchFunc {
    (source: string, subString: string): boolean;
}
 
const mySearch: SearchFunc = function(source: string, subString: string) {
    return source.search(subString) > -1;
};
 
console.log(mySearch("Hello, world", "world"));  // Affiche true