Constraints are used to define conditions that must be met by the value of a variable.
The uniform API of the constraints allows chains to be formed.
Operators allow you to link constraints together. for example, you can check whether a value is an object or an array. each operator has two operands that are linked together.