To quote from there: > Scala 3 has dropped some unsound and useless features to make the language smaller and more regular. It has added some new constructs to increase its expressiveness. Also, it has changed some constructs to remove warts and increase simplicity, consistency, and usability.
Some of the features they dropped because they were unsound were still useful (to me).
Typescript tries neither to make their typesystem (perfectly) sound, nor to make it as elegant as possible. That results in it to be very useful/pragmatic for everyday-programming tasks.
The ability to type most idiomatic javascript circa 2014. It's definitely a Faustian bargain.
Are you asking how am I sure that/if my specification is correct?
Are you asking how do I make sure I have no bugs without a proof?
Maybe you are asking something else entirely?
How do you use that to prevent errors?
Just rephrase your question as "How will a pervasive system of sanity checks help me prevent errors?", and I hope you agree that it kind of answers itself.