They added it to accommodate some rare cases where variance inference took too long.
while that may be true, they admit in that blog post that "it can be a useful for a reader to explicitly see how a type parameter is used at a glance. For much more complex types, it can be difficult to tell whether a type is meant to be read, written, or both."
When `in` and `out` are used in TypeScript, the compiler doesn't validate the variance
yes it does: ```ts interface Foo<in T> { //error: ype 'Foo<super-T>' is not assignable to type 'Foo<sub-T>' as implied by variance annotation a: T } ``` in my experience, languages that hide variance behind implicit inference just made it so much more confusing for me to learn. every other developer i've spoken to about this feels the same way. it also seems like a downgrade to not allow explicit variance annotations when the old `TypeVar` syntax allows it.