The rules that apply to the data types in a programming language. Every language supports some number of data types (binary, text string, floating point, etc.) that are processed by the instructions. Type checking verifies that the operations performed on the data are correct; for example, a text string cannot be multiplied. Static type checking looks at the source code, while dynamic type checking works at runtime. Both methods are used to verify the proper operation of the program with regard to how instructions operate on the data. See
data type and
polymorphic typing.