> Protection from untrusted input is something that has to be considered in any language
Sure, but some languages make it easier than others. And that was just one example, another example could be having a branch where the input to your function depends on some condition. You could have one of the two branches passing the wrong types, but you will only notice when that branch gets executed.
Not yet been a real world concern in my career, outside webforms, which are handled by framework.