"proper linting" isn't any formal thing. It's traditionally meant more style-related checks than errors, but whatever. In terms of the question, you've totally missed the fact that "when you type check" and "soundness" / completeness are orthogonal concepts. And then it's all as good as your type system. So there should be no difference in errors you could find STATICALLY, but last I looked, there are a few cases where there wasn't any way in Python to catch errors statically, which is not the case, for instance, in Typescript.