Typesystem
Some programming languages have something called a typesystem. This ensures that objects can have specific properties.
By knowing these properties, the compiler can catch a lot of errors before the code is even executed. The compiler can also make a lot more optimizations, because it can make assumptions about the code based on the types used.