На главную

Конвертеры и генераторы кода

Схема GraphQL в TypeScript

SDL превращается в интерфейсы и типы: обязательное поле остаётся строгим, необязательное получает | null, а для полей Query и Mutation собираются типы аргументов и результата.

TypeScript

/** Пользовательский скаляр GraphQL. */
export type DateTime = string;

export type Role = 'ADMIN' | 'EDITOR' | 'VIEWER';

export type SearchResult = User | Post;

export interface Node {
  id: string;
}

export interface User extends Node {
  id: string;
  name: string;
  email: string | null;
  role: Role;
  posts: Post[];
  createdAt: DateTime | null;
}

export interface Post extends Node {
  id: string;
  title: string;
  author: User;
}

export interface NewUser {
  name: string;
  email?: string | null;
  role?: Role | null;
}

export interface Query {
  user: User | null;
  search: SearchResult[];
}

export interface Mutation {
  createUser: User;
}

export interface QueryUserArgs {
  id: string;
}

export type QueryUserResult = User | null;

export interface QuerySearchArgs {
  query: string;
  limit?: number | null;
}

export type QuerySearchResult = SearchResult[];

export interface MutationCreateUserArgs {
  input: NewUser;
}

export type MutationCreateUserResult = User;

Типов: 4 · входных: 1 · интерфейсов: 1 · перечислений: 1 · объединений: 1 · операций: 3