If TypeScript says a value is a string, calling a function shouldn't silently turn
it into a number. Even with strict mode, that can happen through another reference
to the same object.
The sound mode adds stronger checks to the existing compiler. It keeps structural typing and ordinary JavaScript output. Code that the compiler cannot prove safe needs a different implementation, more type information, or an explicit unchecked operation.