L'un des plus gros avantages du typage statique est que c'est une sorte de documentation pour laquelle on a la garantie qu'elle est à jour. Par exemple, quand on s'apprête à modifier le code d'une fonction existante, on a souvent envie de savoir quelles sont les opérations disponibles pour ce qui est passé en paramètre. Pour le savoir, c'est beaucoup plus rapide quand on a un contrôle sur le type que quand on doit chercher récursivement dans le code appelant pour savoir quels sont les types concrets possibles.
Le typage statique sert dès la lecture du code, pas seulement quand on fait une étourderie en modifiant le code qui aurait été probablement détectée indirectement plus tard en lançant les tests unitaires.
Remarque importante : en début de vie d'un logiciel, celui qui a écrit le code from scratch ne sera pas forcément très gêné par une absence de typage, car il connaît déjà bien le code appelant, puisque c'est lui qui l'a écrit. Mais, des années plus tard, quand le code aura bien grossi, les malheureux qui reprendront ce code n'auront pas le luxe d'étudier ce code tout entier avant de commencer à le modifier. À ce moment, sans typage, le code sera chiant à maintenir.