Arrays are covariant in their type param, so I can pass a `Dog[]` into a function that accepts `Animal[]`. If that function adds a `Cat` to the passed array, the compiler is perfectly happy, but we'll see a runtime error.
TypeScript is actually so bad that it might have honestly made JavaScript worse, if that's even possible.
TypeScript's type system is so utterly broken that I honestly don't know if my code is ANY more robust than if I had written it in JavaScript.
Record<> is broken/unsound: https://github.com/microsoft/TypeScript/issues/45335
Generics are wonky and sometimes wrong: https://github.com/microsoft/TypeScript/issues/31006
The `readonly` keyword does absolutely nothing: https://github.com/microsoft/TypeScript/issues/13347
Arrays are covariant in their type param, so I can pass a `Dog[]` into a function that accepts `Animal[]`. If that function adds a `Cat` to the passed array, the compiler is perfectly happy, but we'll see a runtime error.
TypeScript is actually so bad that it might have honestly made JavaScript worse, if that's even possible.