On the other hand, it’s possible to have types and not use them well. I wrote Haskell code based around
Map Text Text which was rather error prone. I refactored it to use a record with specific fields, which reduced a great many errors.
Likewise, a Java program
void doThing() isn’t really typed in any meaningful sense, and
String doThing(String config) isn’t much better.
Since “Presence of unit tests doesn’t ensure good testing” is a sound counter to the study, I’d suppose that “Presence of types doesn’t ensure good typing” is a valid counterargument to the one you used.