Qu'est-ce que les génériques?
sobes.tech IA
Réponse de l'IA
Les génériques en TypeScript permettent de créer des composants (fonctions, classes, interfaces) qui peuvent fonctionner avec différents types de données tout en conservant la sécurité de type. Ils permettent d’écrire un code plus flexible et réutilisable, sans perdre les avantages de la typage statique. L’exemple le plus simple est l’utilisation de génériques dans des fonctions pour retourner le même type que celui passé en argument.
// Fonction qui accepte un argument de n’importe quel type et le retourne
function identity<T>(arg: T): T {
return arg;
}
// Utilisation d’un générique avec un type spécifique - string
let outputString = identity<string>("chaîne"); // Le type de outputString sera string
// Utilisation d’un générique avec inférence automatique du type - number
let outputNumber = identity(123); // Le type de outputNumber sera number
Les génériques peuvent aussi être utilisés dans des classes:
// Classe qui travaille avec des éléments de n’importe quel type
class GenericBox<T> {
value: T;
constructor(initialValue: T) {
this.value = initialValue;
}
}
// Création d’une instance de GenericBox avec le type string
let stringBox = new GenericBox<string>("bonjour");
// Création d’une instance de GenericBox avec le type boolean
let booleanBox = new GenericBox(true); // TypeScript inférera le type
Et dans des interfaces:
// Interface avec générique
interface KeyValuePair<K, V> {
key: K;
value: V;
}
// Utilisation de l’interface avec des types spécifiques
let stringNumberPair: KeyValuePair<string, number> = { key: "âge", value: 30 };
Avantages de l’utilisation des génériques:
- Réutilisation du code: Une structure peut être utilisée avec différents types de données.
- Sécurité de type: Le compilateur vérifie les types lors de la compilation, évitant ainsi des erreurs potentielles.
- Lisibilité et maintenabilité: Le code devient plus compréhensible, car il est clair avec quels types le composant travaille.
Les génériques sont souvent utilisés dans des bibliothèques et frameworks, comme React (pour typer les props des composants), Redux (pour typer le store), ainsi que lors de la manipulation de collections de données.