Skip to main content

GraphQLScalarType <TInternal, TExternal>

Scalar Type Definition

The leaf values of any request and input values to arguments are Scalars (or Enums) and are defined with a name and a series of functions used to parse input from ast or variables and to ensure validity.

If a type's serialize function returns null or does not return a value (i.e. it returns undefined) then an error will be raised and a null value will be returned in the response. It is always better to validate

Example:

function ensureOdd(value) {
if (!Number.isFinite(value)) {
throw new Error(
`Scalar "Odd" cannot represent "${value}" since it is not a finite number.`,
);
}

if (value % 2 === 0) {
throw new Error(`Scalar "Odd" cannot represent "${value}" since it is even.`);
}
}

const OddType = new GraphQLScalarType({
name: 'Odd',
serialize(value) {
return ensureOdd(value);
},
parseValue(value) {
return ensureOdd(value);
}
valueToLiteral(value) {
return parse(`${ensureOdd(value)`);
}
});

Custom scalars behavior is defined via the following functions:

  • serialize(value): Implements "Result Coercion". Given an internal value, produces an external value valid for this type. Returns undefined or throws an error to indicate invalid values.
  • parseValue(value): Implements "Input Coercion" for values. Given an external value (for example, variable values), produces an internal value valid for this type. Returns undefined or throws an error to indicate invalid values.
  • parseLiteral(ast): Implements "Input Coercion" for literals including non-specified replacement of variables embedded within complex scalars. This method will be removed in v18 favor of the combination of the replaceVariables() utility and the parseConstLiteral() method.
  • parseConstLiteral(ast): Implements "Input Coercion" for constant literals. Given an GraphQL literal (AST) (for example, an argument value), produces an internal value valid for this type. Returns undefined or throws an error to indicate invalid values.
  • valueToLiteral(value): Converts an external value to a GraphQL literal (AST). Returns undefined or throws an error to indicate invalid values.

Index

Constructors

constructor

Properties

astNode

astNode: Maybe<ScalarTypeDefinitionNode>

description

description: Maybe<string>

extensionASTNodes

extensionASTNodes: readonly ScalarTypeExtensionNode[]

extensions

extensions: Readonly<GraphQLScalarTypeExtensions>

name

name: string

parseConstLiteral

parseConstLiteral: undefined | GraphQLScalarConstLiteralParser<TInternal>

parseLiteral

parseLiteral: GraphQLScalarLiteralParser<TInternal>
@deprecated

use replaceVariables() and parseConstLiteral() instead, parseLiteral() will be deprecated in v18

parseValue

parseValue: GraphQLScalarValueParser<TInternal>

serialize

serialize: GraphQLScalarSerializer<TExternal>

specifiedByURL

specifiedByURL: Maybe<string>

valueToLiteral

valueToLiteral: undefined | GraphQLScalarValueToLiteral

Accessors

[toStringTag]

  • get [toStringTag](): string
  • Returns string

Methods

toConfig

  • toConfig(): GraphQLScalarTypeNormalizedConfig<TInternal, TExternal>
  • Returns GraphQLScalarTypeNormalizedConfig<TInternal, TExternal>

toJSON

  • toJSON(): string
  • Returns string

toString

  • toString(): string
  • Returns string