When types were pushed into the C language (function prototypes, etc), it fixed a lot of bugs. The compiler would prevent you from pushing a short into an int, etc. Because that was a common and hard to debug mistake, this experience increased the popularity of types.
Typing of higher level objects is less useful. When you pass an object into the wrong function, the code usually doesn't even pretend to work (unlike an integer passed in as a float parameter). Also, because objects are so different, it's rare to accidentally pass an object as something else. The only time I've seen that happen is in very convoluted, multi-layered code bases.
We can see something similar in languages like Ruby or Perl, where it's actually kind of nice that you don't have to worry about whether a variable holds a string or integer or whatever. (For some reason, Javascript's implementation of the same idea seems to be a bit more annoying, but that could just be me).
So strong type systems are not necessarily a boon. (Of course, on the other hand, we have Haskell, where the type system can help reduce bugs).