Programming tools like IDE's can provide a richer set of supporting features or they are more sophisticated. Mainly regarding refactoring, suggestions, debugging, metrics, detection, prove, inspection, documention, generation, build,...
They are harder to use on prototyping stage when you are discovering what actually you need to write. That's why language with optional static typing (like TypeScript) are the best of both worlds. You can prototype without types and add them when you have discovered what you need.
Typing is merely one check that can be performed. A comprehensive test suite provides a lot more confidence in the code, and minimises the effectiveness of the type checking.
Dynamic typing has easier access to meta information. This has advantages and disadvantages, like monkey patching. It's more difficult to realise in static typed languages (for compiler creators), but does exist in form of Reflection.
statically typed languages come with overhead that often would be better put to use on testing, documentation, architecture and most importantly new features.
Static typing leads to large codebases with more files and classes compared to dynamically typed languages. It also forces the continual creation of logic which has nothing to do with the actual problem being solved. And which have to be maintained too.
The static typing is not the cause of larger files, but perhaps instead the style of the syntax. As a counter-example: a haskell implementation might be shorter than ColdFusion.
danielrbradley
It encourages the programmer to actively consider the type of an object at and prior to the point of creation, and thinking about what you're doing in advance is strongly correlated with higher quality code.