GraphQL Schema to TypeScript Types

Convert GraphQL SDL types, enums, and inputs directly into TypeScript interface definitions.

  • 100% free
  • Private in browser
  • No signup
  • No watermarks

TypeScript Output (1 types)

export interface Product {
  id: string;
  title: string;
  price: number;
  tags?: string[];
}

About GraphQL Schema to TypeScript Types

The GraphQL Schema to TypeScript Converter turns GraphQL SDL into exported TypeScript interfaces. Paste type, input, or interface definitions and each block becomes an interface with the same name. Int and Float map to number, Boolean to boolean, ID and String to string, and fields without a ! are marked optional. It reads one field per line and is meant for quick typing of simple schemas: enums become string-literal unions, while unions and custom scalars are left for you to declare.

How to use GraphQL Schema to TypeScript Types

  1. Paste your type definitions into the GraphQL SDL Schema box.
  2. Keep each field on its own line, such as price: Float!.
  3. Check the interfaces and the type count in the TypeScript Output panel.
  4. Click Copy TypeScript and paste the result into a .ts file.

Key features

  • Converts type, input, and interface blocks to export interface
  • Maps Int and Float to number, Boolean to boolean, ID and String to string
  • Marks nullable fields optional with ? and non-null fields required
  • Turns scalar lists such as [String!] into string[]
  • Keeps references to other object types by name
  • Ignores # comment lines and counts the generated types

Frequently asked questions

How do I convert a GraphQL schema to TypeScript?
Paste your SDL into the GraphQL SDL Schema box and the interfaces appear in the TypeScript Output panel. Click Copy TypeScript to copy them into your project.
How are nullable and non-null fields handled?
A field ending in ! becomes a required property and every other field becomes optional with ?. For example, title: String! becomes title: string; and tags: [String!] becomes tags?: string[];.
Are enums, unions, and custom scalars converted?
Enums are: enum Role { ADMIN USER } on separate lines becomes type Role = 'ADMIN' | 'USER'. Union and scalar definitions are skipped, and a field that uses one keeps that type name, so declare it yourself.
How are list fields typed?
Lists of built-in scalars become typed arrays, so [Int] gives number[] and [Boolean] gives boolean[]. A list of object types such as [Review] becomes Review[]. Nested lists are not supported.
Do fields with arguments work?
The return type is kept and the arguments are dropped, so posts(first: Int): [Post] becomes posts?: Post[]. The arguments must sit on one line. For full operation typing, run GraphQL Code Generator against your schema.

Rate this tool

Be the first to rate — helps others and improves this page.