1. Syntax '<Type 1> | <Type 2> | ...' 2. Success on first match. 3. Enforce the matched type only if it is enforced type (<Type>!). That is if 'string | number!' matches string, type will not be enforced.