I'd say it's about what static languages don't let you do that dynamic ones do. For example I just found a bug in some scheduling code I wrote where a date value could be null but I was treating it as non null. I change the type to nullable and the compiler tells me everywhere I currently use it in an invalid way.
Types help make (some) invalid states unrepresentable, though the type systems could always be better and some data can only be checked at runtime.
But you can focus your test effort on checking those logic conditions. In addition it makes teamwork far easier.
I'd compare it to the benefits of rust over plain C. Yes you can write safe code in C with a lot of discipline and being 100% focused all the time, or you can leverage tools to let you catch your mistakes and free mental cycles for the actual problem at hand.