On How TypeScript Handles Variance
This lesson gives the theory of how TypeScript handles variance.
We'll cover the following
Type system variances
TypeScript variances use the nomenclature of another language, which is confusing by nature. It’s not something you must master since the compiler will stop you from doing anything crazy.
However, it’s good to understand before having the compiler manage the complexity for us. Before getting started, let’s create some interfaces to examine how TypeScript handles (or doesn’t handle) covariant, contravariant, bivariant, and invariant types.
We will create three interfaces which will be all inherited in the chain. So, InterfaceA
inherits InterfaceB
which inherits InterfaceC
.
interface InterfaceA {
a1: number;
}
interface InterfaceB extends InterfaceA {
b2: string;
}
interface InterfaceC extends InterfaceB {
c3: boolean;
}
Type 1: Invariance
The concept of invariance is the simplest of the type systems. This means the variable’s type is the only type accepted.
Invariance accepts supertypes; it also does not accept subtypes.
Get hands-on with 1200+ tech skills courses.