A set of objects that acts like types (type checking and type casting) with a support for basic type algebra.