Maybe I need to spend some time in Haskell and come over to your way of seeing it. But the studies show that constructing the type system for your problem is very difficult and remains error prone. People routinely make mistakes with types systems of all kinds. I've found I spend more time making the compiler happy that it does making me happy.
But still, my point stands - writing tests during early experimentation is a lot harder than just altering some type and letting the compiler infere what needs to be done or what you broke.
I've spent some time writing Clojure and still use dynamic languages a lot for smaller tasks, so I know both sides. This doesn't mean much, but I'd really encourage you to try some ML language and spend some time with a nice type system. Haskell is probably too big a time investment, so maybe try Elm [0] - it's very beginner friendly and a lot of the people using it come from JavaScript.
With property based testing, your system will come up with mock data for you.
Wow, then you are extremely lucky because bugs like that would occasionally consume a whole day of senior developer time at my previous Python job.
It seems like a symptom of other problems more than anything, and using a staticly typed language will just make those problems manifest in a different way.
If you are writing all of your code from scratch, then it doesn't happen too often. You usually have enough of the current context in your head to avoid most type level mistakes.
The real strengths come from two situations.
The first is refactoring. There is just no contest here. Having every single place where your change affects the test of the program identified automatically is extremely useful.
The second is returning to old code and either trying to understand it or make small changes to it.
http://games.greggman.com/game/dynamic-typing-static-typing/
The small amount of scientific study around what type checking and static typing gives you is that you avoid around 3% of bugs but even those 3% are easier to fix than the effort in writing them correctly in the first place. While I agree that the subject needs more study but what we know now: the real win would be to have a dev process that lowers criticality of failure (like TDD, CI and other Agile processes) and dispense with static typing for most projects.