At the end of the day, I rarely care about the language. I usually just care about my data morphisms. And a good type system helps me immensely in that regard.
You want code to be obvious. The senior engineer smiles when the junior engineer reads his code and says in just seconds "I know exactly what this does and have high confidence that it has no bugs."
Simpler languages facilitate simpler codebases.
The great thing with Typescript is that you don't have to use all its spec to benefit from it, so no user has to know the entire spec.
But you can't complain that Typescript does exactly what it was invented for. Blame Javascript.
It turns out trying to model a dynamic language's typical usage at compile-time is lead to some complicated stuff.
Personally I think it's mostly worth it since most of that is hidden behind API-boundries or (more commonly) in type-definition files and your own code typically either has really simple type annotations or is inferred (i.e. not explicitly type annotated).
But I see your point and it does sorta feel a bit C++-like in this respect sometimes.
I you would design TypeScript from scratch, you might have a point.
It's there primarily so that your development environment can give you accurate feedback when you're using your favourite JS libraries.