---
name: "GraphQL::Type"
section: "3pm"
platform: "linux"
package: "libgraphql-perl"
version: "0.54-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/GraphQL::Type"
---

# GraphQL::Type(3pm)

GraphQL type object

## NAME

GraphQL::Type - GraphQL type object

## SYNOPSIS

```
    extends qw(GraphQL::Type);
```

## DESCRIPTION

Superclass for other GraphQL type classes to inherit from.

## ENCODING

Those Perl classes each implement a GraphQL type. Each item of GraphQL data has a GraphQL type.  Such an item of data can also be represented within Perl. Objects of that Perl class take responsibility for translating between the Perl representation and the "GraphQL representation". A "GraphQL representation" means something JSON-encodeable: an "object" (in Perl terms, a hash), an array (Perl: array-reference), string, number, boolean, or null.

See "METHODS" for generic methods to translate back and forth between these worlds.

Code that you provide to do this translation must return things that *can* be JSON-encoded, not things that *have been* so encoded: this means, among other things, do not surround strings in `"""`, and for boolean values, use the mechanism in JSON::MaybeXS: `"JSON-"`true\> etc.

## SUBCLASSES

These subclasses implement part of the GraphQL language specification. Objects of these classes implement user-defined types used to implement a GraphQL API.

- GraphQL::Type::Enum

  - GraphQL::Type::InputObject

  - GraphQL::Type::Interface

  - GraphQL::Type::List

  - GraphQL::Type::NonNull

  - GraphQL::Type::Object

  - GraphQL::Type::Scalar - also implements example types such as "String"

  - GraphQL::Type::Union

  ## ROLES

These roles implement part of the GraphQL language specification. They are applied to objects of GraphQL::Type classes, either to facilitate type constrants, or as noted below.

- GraphQL::Role::FieldsInput - provides "fields" attribute for an input type

  - GraphQL::Role::FieldsOutput - provides "fields" attribute for an output type

  - GraphQL::Role::Abstract - abstract type

  - GraphQL::Role::Composite - type has fields

  - GraphQL::Role::Input - type can be an input

  - GraphQL::Role::Leaf - simple type - enum or scalar

  - GraphQL::Role::Listable - can be list-wrapped; provides convenience method

  - GraphQL::Role::Named - has a "name" and "description", provided by this role

  - GraphQL::Role::Nullable - can be null-valued

  - GraphQL::Role::Output - type can be an output

  ## TYPE LIBRARY

GraphQL::Type::Library - implements various Type::Tiny type constraints, for use in Moo attributes, and Function::Parameters/Return::Type methods and functions.

## METHODS

### uplift

Turn given Perl entity into valid Perl value for this type if possible.

### graphql\_to\_perl

Turn given GraphQL entity into Perl entity.

### perl\_to\_graphql

Turn given Perl entity into GraphQL entity.

### from\_ast($name2type, $ast\_node)

Class method.  `$name2type` is a hash-ref populated by "from\_ast" in GraphQL::Schema.  Takes a hash-ref node from an AST made by "parse" in GraphQL::Language::Parser. Returns a type object.

### to\_doc($doc)

Returns Schema Definition Language (SDL) document that describes this object.
