Strict

All types in the strict category are constrained by a type-check that is applied to an input which makes sure that the input is an instance of the primitive:

Types::Strict::Integer[1] # => 1
Types::Strict::Integer['1'] # => raises Dry::Types::ConstraintError

Starting with 1.0 types imported by default are strict:

Types::Integer.eql?(Types::Strict::Integer) # => true