(Or "data type") A set of values from which a variable, constant, function, or other expression may take its value. A type is a classification of data that tells the compiler or interpreter how the programmer intends to use it. For example, the process and result of adding two variables differs greatly according to whether they are integers, floating point numbers, or strings.
Types supported by most programming languages include integers (usually limited to some range so they will fit in one word of storage), Booleans, floating point numbers, and characters. Strings are also common, and are represented as lists of characters in some languages.
If s and t are types, then so is s -> t, the type of functions from s to t; that is, give them a term of type s, functions of type s -> t will return a term of type t.
Some types are primitive - built-in to the language, with no visible internal structure - e.g. Boolean; others are composite - constructed from one or more other types (of either kind) - e.g. lists, arrays, structures, unions. Object-oriented programming extends this with classes which encapsulate both the structure of a type and the operations that can be performed on it.
Some languages provide strong typing, others allow implicit type conversion and/or explicit type conversion.