Typescript (even with all those options on) isn't even close to sound.
Some of the soundness issues are by design (making directly overlayed JS code reasonable to type/interface with), some are due to 'taking too much time/design complexity if implemented'.
I won't go into them one by one, but you can jump into most of the issues here to get a sense:
https://github.com/Microsoft/TypeScript/issues?utf8=&q=Sound...
https://github.com/Microsoft/TypeScript/issues?utf8=&q=unsou...
I won't take a position on the matter other than to say that it's a tricky balance and the TS team are at the very least extremely clear in saying that you should not be looking for a high degree of soundness here (JS interop is a higher priority).
If those things are important, I would recommend Scala.js or PureScript or... anything more self contained (and remember that they're still ultimately dynamically typed on the JS boundary, just not inside the language).
Here's the TS team explaining their position themselves:
https://github.com/Microsoft/TypeScript/issues/9825#issuecom...
https://github.com/Microsoft/TypeScript/issues/13003 (not the most cordial commenter unfortunately)