Covariance / Contravariance

TypeScript 🔴 Senior

Definition

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.

Termes lies

#advanced#interview#type-system