one of the other reasons global inference isn't used is because it causes weird spooky action at a distance - changing how something is used in one place will break other code.
Or is this about libraries and API compatibility?
* I have seen examples of spooky-action-at-a-distance where usage of a function changes its inferred type, but that goes away if functions are allowed to have union types, which is complicated but not impossible. See: https://github.com/microsoft/TypeScript/issues/15114
If I download a random project and delete the interface files, will that be enough to see issues, or is it something that happens when writing new code?
The problem is when it doesn't complain but instead infers some different type that happens to match.