Zum Inhalt springen
100% lokal

GraphQL SDL zu TypeScript Types

Konvertieren Sie ein GraphQL-Schema in entsprechende TypeScript Types, Interfaces und Enums.

Eingabe
Ausgabe

GraphQL SDL zu TypeScript Types

Fügen Sie ein GraphQL Schema Definition Language (SDL) Dokument ein — die Type-, Input-, Interface- und Enum-Deklarationen, die eine GraphQL API beschreiben — und dieses Tool generiert die entsprechenden TypeScript Types. Backend-Teams, die einen GraphQL Server aufbauen, oder Frontend-Teams, die einen nutzen, ohne Codegen-Tools installiert zu haben, erhalten typisierte Shapes für jedes Objekt, Input und Interface im Schema in einem Durchgang, ohne einen Build-Schritt nur zum Anschauen der Types einzurichten.

Die Scalar-Zuordnung folgt standardmäßig der GraphQL-Spezifikation: ID und String werden zu string, Int und Float zu number, Boolean bleibt boolean, und jeder benutzerdefinierte Scalar — DateTime, JSON, Upload — fällt auf einen konfigurierbaren Typ zurück, den Sie wählen. Nullable-Felder können als optionale Eigenschaft (field?: Type) oder als explizite Union mit null (field: Type | null) dargestellt werden, und die gleiche Wahl der Form gilt für ganze Deklarationen: Wählen Sie zwischen TypeScript Type-Aliasen oder Interfaces, wobei implements zu extends wird, wenn Interfaces gewählt werden. Enums generieren entweder eine String-Literal-Union oder ein echtes TypeScript enum. Ein Namenspräfix oder -suffix verhindert Kollisionen zwischen generierten und handgeschriebenen Namen, Kommentare und description-Blöcke aus dem Schema werden als JSDoc übertragen, und Typen, deren Name mit einem Unterstrich beginnt — GraphQL's eigene Introspection Types — werden standardmäßig übersprungen.

Feld-Argumente und Directives werden automatisch entfernt, da TypeScript Types Form beschreiben, nicht Resolver: field(id: ID!): User @deprecated wird zu einem einfachen Feld. Verschachtelte List-Typen wie [String!]! behalten ihre innere und äußere Nullability unabhängig, sodass eine Non-Null-Liste von Nullable Strings und eine Nullable-Liste von Non-Null Strings unterschiedlich ausgegeben werden. Deklarationen können auch alphabetisch sortiert werden, anstatt der ursprünglichen Reihenfolge des Schemas zu folgen.

Alles läuft lokal in Ihrem Browser — das Schema, das Sie einfügen, wird nie hochgeladen. Kopieren Sie die generierten Types, laden Sie sie als .txt-Datei herunter oder senden Sie die Ausgabe direkt zurück in die Eingabe, um das Schema weiter zu verfeinern.

Häufige Fragen

Verarbeitet es verschachtelte List- und Non-Null-Modifizierer wie [String!]!?
Ja. Jede Ebene der Nullability — die Liste selbst und ihre Elemente — wird unabhängig zugeordnet, sodass [String!]! zu string[] wird, während [String] zu (string | null)[] wird.
Was passiert mit benutzerdefinierten Scalars wie DateTime oder JSON?
Sie werden dem Fallback-Typ zugeordnet, der in der Option Custom scalar type festgelegt ist (standardmäßig unknown). Legen Sie es auf string, Date oder einen anderen entsprechenden Typ fest und jedes Feld mit diesem Scalar nimmt ihn auf.
Werden Feld-Argumente und Directives in der Ausgabe beibehalten?
Nein. TypeScript Types beschreiben nur Form, daher werden Argumente wie (limit: Int) und Directives wie @deprecated verworfen; das Feld selbst wird noch normal konvertiert.
Kann ich Interfaces anstelle von Typ-Aliasen generieren?
Ja. Wechseln Sie Declaration kind zu Interfaces, und jede implements-Klausel auf einem GraphQL Type wird zu einer extends-Klausel auf dem TypeScript Interface.
Wird mein Schema irgendwo hochgeladen?
Nein. Die Konvertierung läuft vollständig in Ihrem Browser — Ihr GraphQL Schema verlässt Ihr Gerät nie.