Covariance / Contravariance
TypeScript 🔴 SeniorDefinition
Covariance: un sous-type peut remplacer le type parent (sortie). Contravariance: le type parent peut remplacer le sous-type (entree). Determine la compatibilite des generics.
Analogie
Covariance: un chien peut passer la ou un animal est attendu (du specifique au general). Contravariance: l'inverse pour les consommateurs.
Exemple de code
// Covariant: retour de fonction
type Getter<T> = () => T; // Dog -> Animal OK
// Contravariant: parametre de fonction
type Setter<T> = (val: T) => void; // Animal -> Dog OK
Cas d'usage
Comprendre pourquoi certaines assignations generiques echouent et concevoir des APIs correctement typees.