Instead of focusing on what TS does not, focus on what it does.

TypeScript is not sound; JavaScript isn’t either. The first one will catch some type errors, the second will catch none.

Syntax highlighting, linting, testing, and now type checking: every step can make you more confident about the code you ship, before it even hits the browser.

You can forgo using any help and probably you’ll code faster, but, again, you lose confidence.

Tests are the only thing that give me confidence about any code I write, Javascript or otherwise.

And compilers are effectively a rudimentary form of test. They are not sufficient, nor necessary but they do validate some basic assumptions about the code.

They also remove redundant testing (you only need to prove something fulfills certain properties once as long as you have a type for it); and the more advanced the type system the fewer tests needed.

friendly tips: runtime type checks are available https://github.com/gcanti/io-ts https://github.com/pelotom/runtypes

I mention io-ts https://github.com/gcanti/io-ts in the post