I dunno where this idea comes from that a code erroring out is somehow catastrophic. If you pass a wrong object type to a function, that mistake is very easy to fix. If you are structuring your code with crazy inheritance to where this error can get hidden, thats solely a you problem.
> I dunno where this idea comes from that a code erroring out is somehow catastrophic.
I mean if it's a medical device it might not be great?
> If you pass a wrong object type to a function, that mistake is very easy to fix.
And with compile time checks you can avoid ever having to get to the point where you have to fix it.