Type system
a set of rules that assigns a property called a 'type' to every object in a system, then restricts which operations are valid for each type, making certain categories of error structurally impossible rather than detectable after the fact.