Variance
TypeScript 🔴 SeniorType : 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.