In order to add such constraints you should define "constructor functions" and apply the validation there, i.e.:
To OP: Yes, the searchable term is "smart constructors". However, it has been used at least once on this list to mean something different, so look out.