+A **type system** is a set of rules within a [programming language](/wiki/programming_language) that assigns a property, called a [data type](/wiki/data_type), to various constructs like values and expressions. Its purpose is to categorize data and enforce constraints, aiming to catch errors and ensure predictable program behavior, often through [type checking](/wiki/type_checking).
+## See also
+- [Static Analysis](/wiki/static_analysis)
+- [Dynamic Analysis](/wiki/dynamic_analysis)
+- [Type Inference](/wiki/type_inference)