GraphQL-Schema zu TypeScript-Typen
Generieren Sie mit Codegen Typen aus .graphql-Dateien.
GraphQL-Schema zu TypeScript-Typen ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Das Problem: Schema und Typen driften auseinander
In GraphQL-Projekten geraten das Server-Schema und die TypeScript-Typen des Clients ohne Automatisierung leicht auseinander. Die Codegenerierung löst dieses Problem, indem sie Typen direkt aus dem Schema ableitet.
# Without codegen: manual types that drift from schema
interface User { id: string; name: string; } // may not match schemaGraphQL Code Generator
@graphql-codegen/cli liest Ihr GraphQL-Schema und erzeugt automatisch TypeScript-Typen.
npm install --save-dev @graphql-codegen/cli @graphql-codegen/typescriptKonfiguration mit codegen.yml
Konfigurieren Sie die Quelle des Schemas und den Ausgabeort in codegen.yml.
# codegen.yml
schema: "./api/schema.graphql"
generates:
src/generated/types.ts:
plugins:
- typescriptDen Generator ausführen
Führen Sie graphql-codegen aus, um TypeScript-Typen aus Ihrem Schema zu erzeugen.
npx graphql-codegen
# Generates src/generated/types.ts with all schema typesBeispiel für die erzeugte Ausgabe
Die erzeugte Datei enthält TypeScript-Interfaces, die jedem GraphQL-Typ in Ihrem Schema entsprechen.
// src/generated/types.ts (generated)
export type User = {
__typename?: "User";
id: string;
name: string;
email: string;
};
export type Query = {
__typename?: "Query";
user?: Maybe<User>;
};Schema von einem Remote-Endpunkt
Codegen kann das Schema auch mithilfe von Introspection von einem aktiven GraphQL-Endpunkt abrufen.
# codegen.yml with remote schema
schema:
- https://api.example.com/graphql:
headers:
Authorization: "Bearer ${AUTH_TOKEN}"Zuordnung von Skalar-Typen
Ordnen Sie benutzerdefinierte GraphQL-Skalare in der Codegen-Konfiguration TypeScript-Typen zu.
# codegen.yml
config:
scalars:
DateTime: string
JSON: Record<string, unknown>
Upload: FileUmgang mit Enums
GraphQL-Enums werden je nach Codegen-Konfiguration TypeScript-String-Enums oder Union-Typen zugeordnet.
# Generated from GraphQL enum Role { ADMIN USER GUEST }
export enum Role {
Admin = "ADMIN",
User = "USER",
Guest = "GUEST",
}Non-Null und Maybe
Nullable Felder in GraphQL werden in den erzeugten Typen zu Maybe<T>, also zu T | null | undefined, und bilden damit die Nullability des Schemas ab.
// GraphQL: name: String (nullable)
// Generated: name?: Maybe<string>
// GraphQL: id: ID! (non-null)
// Generated: id: stringCI-Integration
Führen Sie Codegen in CI aus, um zu überprüfen, ob die erzeugten Typen aktuell sind. Lassen Sie den Build fehlschlagen, wenn sich das Schema geändert hat, ohne dass die Typen neu erzeugt wurden.
# CI: check no drift
npx graphql-codegen --check
# Exits 1 if generated files are out of dateRückblick: Vom Schema zu den Typen
GraphQL Code Generator liest Ihr Schema und erzeugt automatisch TypeScript-Typen. Konfigurieren Sie ihn mit codegen.yml, führen Sie graphql-codegen aus und integrieren Sie ihn in CI, um ein Auseinanderdriften von Schema und Typen zu verhindern.
Kurzer Test
Was ist der Hauptzweck von GraphQL Code Generator?
Das haben Sie gelernt
GraphQL Code Generator verhindert, dass Schema und Typen auseinanderdriften, indem TypeScript-Typen aus Ihrem Schema erzeugt werden. Konfigurieren Sie ihn mit codegen.yml, ordnen Sie benutzerdefinierte Skalare zu und integrieren Sie ihn in CI, um die Aktualität zu gewährleisten.
Häufig gestellte Fragen
Ist die Lektion „GraphQL-Schema zu TypeScript-Typen“ kostenlos?
Ja — der vollständige Text von „GraphQL-Schema zu TypeScript-Typen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „GraphQL-Schema zu TypeScript-Typen“?
Generieren Sie mit Codegen Typen aus .graphql-Dateien. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um TypeScript Academy zu starten?
Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „GraphQL-Schema zu TypeScript-Typen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?
Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- GraphQL-Schema zu TypeScript-Typen
- Typisierte Resolver mit GraphQL Code Generator
- Typisierter GraphQL-Client mit Apollo und urql
- Typsicherheit von Ende zu Ende: Schema-First-Workflow