Skip to main content

Variance and Inference

Type Variance

0:00
LearnStep 1/2

Understanding Variance

What is Variance?

Variance describes how subtyping relationships transfer to generic types.

Covariance (Output Positions)

If Dog extends Animal, then Producer<Dog> extends Producer<Animal>

typescript

Contravariance (Input Positions)

If Dog extends Animal, then Consumer<Animal> extends Consumer<Dog>

typescript

Invariance

When T appears in both positions, no subtyping relationship:

typescript