Set of rules that assign a property called type to various constructs a computer program consists of, such as variables, expressions, functions or modules.