Type Attributes
Types themselves have optional attributes you can apply to get further functionality.
Append .optional
to a Type to allow nil
By default, nil values raise an error:
Types::Strict::String[nil]
# => raises Dry::Types::ConstraintError
Add .optional
and nil
values become valid:
optional_string = Types::Strict::String.optional
optional_string[nil]
# => nil
optional_string['something']
# => "something"
optional_string[123]
# raises Dry::Types::ConstraintError
Types::String.optional
is just syntactic sugar for Types::Strict::Nil | Types::Strict::String
.
Handle optional values using Monads
See Maybe extension for another approach to handling optional values by returning a Monad object.