> then everything internal you can trust
I'd argue that what an expressive type system gives you is precisely this trust that internal data is passed around correctly.
In a dynamic langauge it's much easier to pass the wrong argument to a function, and I'd probably want to test for that...