One problem is when people store different types in the same variable, what type is it at the time I use it.

Types save you cognitive effort and catch errors earlier, while writing code, not later when running or testing

They shouldn't do that. I get how adding more checks obviously helps in a way, but only if you ignore the cost. It's not worth the effort that you could instead spend writing better tests. Most of the time your type is like FooFactory which doesn't tell you much anyway.

Then again it's not so bad if you're willing to make AI add all the types and not even care.