Un sistema de tipos de datos define la manera en la cual un lenguaje de programación clasifica los valores y expresiones en "tipos", cómo pueden ser manipulados dichos tipos y cómo interactúan.