This is an example of a non-nullable wrapper for C#.
You can think of it like the complete opposite of Nullable<T>:
- Nullable<T> gives you the ability to pass around or store either a value or null.
- Required<T> forces the value to be non-null.
Trying to assign null to a Required<T> variable, or passing null into a method that defines the input as Required<T> will cause an exception. This is good because the sooner we catch errors, the better. Code that fails early is much easier to debug and maintain than code that fails five calls deeper.