Sofiane Boumedine Lexique Dev

Variance

TypeScript 🔴 Senior

Type : Concept

Definition

La variance definit comment la relation de sous-typage se propage dans les types generiques. Covariant (in) : meme direction. Contravariant (out) : direction inversee. Invariant : aucune substitution possible.

Analogie

Un tube : covariant c'est un entonnoir (plus large en entree), contravariant c'est une buse (plus large en sortie), invariant c'est un tube rigide (taille fixe).

Exemple de code

type Producer<out T> = () => T;     class="cmt">// covariant
type Consumer<in T> = (val: T) => void; class="cmt">// contravariant
class="cmt">// Producer<Cat> assignable a Producer<Animal> (covariant)
class="cmt">// Consumer<Animal> assignable a Consumer<Cat> (contravariant)

Cas d'usage

Comprendre les erreurs d'assignation de types generiques et utiliser les annotations in/out pour plus de clarte.

coreinterview-question