Le typage statique est une technique utilisée dans certains langages de programmation impératifs (C++, Java, Pascal, ou même Visual Basic avec l'Option Explicit[1]) pour associer à un symbole dénotant une variable le type de la valeur dénotée par la variable ; et dans certains langages de programmation fonctionnels (ML, OCaml, Haskell, PureScript, etc.) pour associer à une fonction (un calcul) le type de son paramètre et le type de la valeur calculée.
Une telle association présente les bénéfices potentiels suivants :
un compilateur de langage à typage statique détecte les erreurs de types avant que le programme ne soit exécuté (on obtient ainsi la sûreté du typage) ;
le même compilateur peut tirer parti de l'information sur les types pour réaliser certaines optimisations du code objet ;
enfin, puisque les types des objets manipulés sont connus, le compilateur peut éliminer cette information du code objet produit, avec pour principal avantage un gain de mémoire par rapport aux systèmes à typage dynamique.