Dynamic Typing is like stuffing all your data into a pile of <String, Object>HashMaps and calling it a day.
It's fucking insane.
- You lost all compile-time checks.
- You will have to implement a million unit tests where a type system would have made these guarantees.
- You literally have to find a way to exercise every single code path in your system in order to avoid the simplest of type mistakes. In this sense, you are forced to write exhaustive tests.
- It's impossible, just from looking at a function, to know with any certainty what values are provided or generated.
- Given a variable, it's impossible to know the valid range of values it may contain.