Can someone give me an example of TypeScript declaration that is not "sound"?
I thought that
"It guarantees that (1) an expression that has a static type T can never evaluate to a value that is not a T, and that (2) evaluation cannot run into unexpected runtime type errors."
is already supported in TypeScript.