Learning covariance and contravariance in TypeScript could be tricky (I know from my experience!), but knowing them is a great addition to understanding types and subtyping. In this post, you'll read an accessible explanation of covariance and contravariance concepts. 1. Subtyping Subtyping is a form of polymorphism in which a subtype is associated with a base type by some form of substitutability
