The attractive part for me when considering TypeScript was that it had 0 runtime overhead, while coding in a type safe manner. If I use nothing but types via my TypeScript code, isn't Safe TypeScript simply just overhead?
The overhead of safe typescript is only in the parts of your code that interact with untyped code. For those parts the default typescript was actually unsafe.
I see. This adds soundness to an entire application ts or non ts.
The main goal of a sound gradual type system is to make it so that any type errors can be "blamed" on the untyped part of the code. For example, if untyped code calls a safe-typescript function and passes the wrong argument type safe-typescript will check and detect the error right away. On the other hand, traditional typescript would accept the invalid parameter without checking and would eventually throw a "method missing" exception somewhere down the line.
Compile-time checks can't make guarantees about 3rd party code or user input.