There are some cases where you want to create a validation that is more fine-grained than a "type". For example, you might want not just a string, but a specific format of string. Or not just a User, but a user that is also an administrator.
For these situations, you can use "refinements". Refinements allow you to create a new struct that is derived from an existing struct with an extra bit of validation layered on top.
Built-in Refinements
Superstruct has several built-in refinements for common use cases. For example, a common one is ensuring that a string matches a specific regular expression pattern: