---
name: "Type::Tiny::Role"
section: "3pm"
platform: "linux"
package: "perl-type-tiny"
version: "2.010001-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Type::Tiny::Role"
---

# Type::Tiny::Role(3pm)

type constraints based on the "DOES" method

## NAME

Type::Tiny::Role - type constraints based on the "DOES" method

## SYNOPSIS

Using via Types::Standard:

```
  package Local::Horse {
    use Moo;
    use Types::Standard qw( Str ConsumerOf );

    has name => (
      is       => 'ro',
      isa      => Str,
    );

    has owner => (
      is       => 'ro',
      isa      => ConsumerOf[ 'Local::Traits::DoesOwnership' ],
      default  => sub { Local::Person->new },
    );
  }
```

Using Type::Tiny::Class's export feature:

```
  package Local::Horse {
    use Moo;
    use Types::Standard qw( Str );
    use Type::Tiny::Role (
      Owner => { role => 'Local::Traits::DoesOwnership' },
    );

    has name => (
      is       => 'ro',
      isa      => Str,
    );

    has owner => (
      is       => 'ro',
      isa      => Owner,
      default  => sub { Local::Person->new },
    );
  }
```

Using Type::Tiny::Role's object-oriented interface:

```
  package Local::Horse {
    use Moo;
    use Types::Standard qw( Str );
    use Type::Tiny::Class;

    my $Owner = Type::Tiny::Role->new(
      role => 'Local::Traits::DoesOwnership',
    );

    has name => (
      is       => 'ro',
      isa      => Str,
    );

    has owner => (
      is       => 'ro',
      isa      => $Owner,
      default  => sub { Local::Person->new },
    );
  }
```

Using Type::Utils's functional interface:

```
  package Local::Horse {
    use Moo;
    use Types::Standard qw( Str );
    use Type::Utils;

    my $Owner = role_type 'Local::Traits::DoesOwnership';

    has name => (
      is       => 'ro',
      isa      => Str,
    );

    has owner => (
      is       => 'ro',
      isa      => $Owner,
      default  => sub { Local::Person->new },
    );
  }
```

## STATUS

This module is covered by the Type-Tiny stability policy.

## DESCRIPTION

Type constraints of the general form `"{ $_->DOES("Some::Role") }"`.

This package inherits from Type::Tiny; see that for most documentation. Major differences are listed below:

### Attributes

- "role"

  The role for the constraint.

  Note that this package doesn't subscribe to any particular flavour of roles (Moose::Role, Mouse::Role, Moo::Role, Role::Tiny, etc). It simply trusts the object's `"DOES"` method (see UNIVERSAL).

- "constraint"

  Unlike Type::Tiny, you *cannot* pass a constraint coderef to the constructor. Instead rely on the default.

- "inlined"

  Unlike Type::Tiny, you *cannot* pass an inlining coderef to the constructor. Instead rely on the default.

- "parent"

  Parent is always **Types::Standard::Object**, and cannot be passed to the constructor.

### Methods

- stringifies\_to($constraint)

  See Type::Tiny::ConstrainedObject.

- numifies\_to($constraint)

  See Type::Tiny::ConstrainedObject.

- "with\_attribute\_values($attr1 =\> $constraint1, ...)"

  See Type::Tiny::ConstrainedObject.

### Exports

Type::Tiny::Role can be used as an exporter.

```
  use Type::Tiny::Role 'MyApp::Printable';
```

This will export the following functions into your namespace:

- "MyAppPrintable"

  - is\_MyAppPrintable( $value )

  - assert\_MyAppPrintable( $value )

  - to\_MyAppPrintable( $value )

  Multiple types can be exported at once:

```
  use Type::Tiny::Role qw( MyApp::Printable MyApp::Sendable );
```

## BUGS

Please report any bugs to \<https://github.com/tobyink/p5-type-tiny/issues\>.

## SEE ALSO

Type::Tiny::Manual.

Type::Tiny.

Moose::Meta::TypeConstraint::Role.

## AUTHOR

Toby Inkster \<tobyink@cpan.org\>.

## COPYRIGHT AND LICENCE

This software is copyright (c) 2013-2014, 2017-2025 by Toby Inkster.

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

## DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
