But it is necessary to write them to test functionality and if the functionality is correct, surely the types are correct as well (and if they aren't, who cares? It works.)
There's less functionality to test if you've described your business constraints in concise type declarations. The type contract is short enough to be validated at a glance.
Static typing makes it marginally safer to not have tests at all, or to have incomplete tests. If you have complete tests, type checking is redundant.
If you have such "complete" tests, you're wasting your time by trying to be a human compiler.
There's less functionality to test if you've described your business constraints in concise type declarations. The type contract is short enough to be validated at a glance.
I'm having a hard time imagining a situation in which static typing could replace even one single test, let alone it being a common occurence. In any such case I can come up with, the test is needlessly limited in scope and can be replaced by a much more comprehensive test. What specifically did you have in mind?
There's less functionality to test if you've described your business constraints in concise type declarations. The type contract is short enough to be validated at a glance.
Static typing makes it marginally safer to not have tests at all, or to have incomplete tests. If you have complete tests, type checking is redundant.
If you have such "complete" tests, you're wasting your time by trying to be a human compiler.