---
name: "Moose::Meta::TypeConstraint"
section: "3pm"
platform: "linux"
package: "perl-moose"
version: "2.4001-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Moose::Meta::TypeConstraint"
---

# Moose::Meta::TypeConstraint(3pm)

The Moose Type Constraint metaclass

## NAME

Moose::Meta::TypeConstraint - The Moose Type Constraint metaclass

## VERSION

version 2.4001

## DESCRIPTION

This class represents a single type constraint. Moose's built-in type constraints, as well as constraints you define, are all stored in a Moose::Meta::TypeConstraint::Registry object as objects of this class.

## INHERITANCE

`"Moose::Meta::TypeConstraint"` is a subclass of Class::MOP::Object.

## METHODS

### Moose::Meta::TypeConstraint-\>new(%options)

This creates a new type constraint based on the provided `%options`:

- •

  name

  The constraint name. If a name is not provided, it will be set to "\_\_ANON\_\_".

- •

  parent

  A `"Moose::Meta::TypeConstraint"` object which is the parent type for the type being created. This is optional.

- •

  constraint

  This is the subroutine reference that implements the actual constraint check. This defaults to a subroutine which always returns true.

- •

  message

  A subroutine reference which is used to generate an error message when the constraint fails. This is optional.

- •

  coercion

  A Moose::Meta::TypeCoercion object representing the coercions to the type. This is optional.

- •

  inlined

  A subroutine which returns a string suitable for inlining this type constraint. It will be called as a method on the type constraint object, and will receive a single additional parameter, a variable name to be tested (usually `"$_"` or `"$_[0]"`.

  This is optional.

- •

  inline\_environment

  A hash reference of variables to close over. The keys are variables names, and the values are *references* to the variables.

### $constraint-\>equals($type\_name\_or\_object)

Returns true if the supplied name or type object is the same as the current type.

### $constraint-\>is\_subtype\_of($type\_name\_or\_object)

Returns true if the supplied name or type object is a parent of the current type.

### $constraint-\>is\_a\_type\_of($type\_name\_or\_object)

Returns true if the given type is the same as the current type, or is a parent of the current type. This is a shortcut for checking `"equals"` and `"is_subtype_of"`.

### $constraint-\>coerce($value)

This will attempt to coerce the value to the type. If the type does not have any defined coercions this will throw an error.

If no coercion can produce a value matching `$constraint`, the original value is returned.

### $constraint-\>assert\_coerce($value)

This method behaves just like `"coerce"`, but if the result is not valid according to `$constraint`, an error is thrown.

### $constraint-\>check($value)

Returns true if the given value passes the constraint for the type.

### $constraint-\>validate($value)

This is similar to `"check"`. However, if the type *is valid* then the method returns an explicit `"undef"`. If the type is not valid, we call `"$self->get_message($value)"` internally to generate an error message.

### $constraint-\>assert\_valid($value)

Like `"check"` and `"validate"`, this method checks whether `$value` is valid under the constraint.  If it is, it will return true.  If it is not, an exception will be thrown with the results of `"$self->get_message($value)"`.

### $constraint-\>name

Returns the type's name, as provided to the constructor.

### $constraint-\>parent

Returns the type's parent, as provided to the constructor, if any.

### $constraint-\>has\_parent

Returns true if the type has a parent type.

### $constraint-\>parents

Returns all of the types parents as an list of type constraint objects.

### $constraint-\>constraint

Returns the type's constraint, as provided to the constructor.

### $constraint-\>get\_message($value)

This generates a method for the given value. If the type does not have an explicit message, we generate a default message.

### $constraint-\>has\_message

Returns true if the type has a message.

### $constraint-\>message

Returns the type's message as a subroutine reference.

### $constraint-\>coercion

Returns the type's Moose::Meta::TypeCoercion object, if one exists.

### $constraint-\>has\_coercion

Returns true if the type has a coercion.

### $constraint-\>can\_be\_inlined

Returns true if this type constraint can be inlined. A type constraint which subtypes an inlinable constraint and does not add an additional constraint "inherits" its parent type's inlining.

### $constraint-\>create\_child\_type(%options)

This returns a new type constraint of the same class using the provided `%options`. The `"parent"` option will be the current type.

This method exists so that subclasses of this class can override this behavior and change how child types are created.

## BUGS

See "BUGS" in Moose for details on reporting bugs.

## AUTHORS

- •

  Stevan Little \<stevan@cpan.org\>

- •

  Dave Rolsky \<autarch@urth.org\>

- •

  Jesse Luehrs \<doy@cpan.org\>

- •

  Shawn M Moore \<sartak@cpan.org\>

- •

  יובל קוג'מן (Yuval Kogman) \<nothingmuch@woobling.org\>

- •

  Karen Etheridge \<ether@cpan.org\>

- •

  Florian Ragwitz \<rafl@debian.org\>

- •

  Hans Dieter Pearcey \<hdp@cpan.org\>

- •

  Chris Prather \<chris@prather.org\>

- •

  Matt S Trout \<mstrout@cpan.org\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2006 by Infinity Interactive, Inc.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
