Hoppa till innehåll
100% lokalt

GraphQL SDL till TypeScript types

Konvertera ett GraphQL-schema till motsvarande TypeScript types, gränssnitt och enums.

Inmatning
Utmatning

GraphQL SDL till TypeScript types

Klistra in ett GraphQL Schema Definition Language (SDL)-dokument — type-, input-, interface- och enum-deklarationer som beskriver ett GraphQL API — och detta verktyg genererar motsvarande TypeScript types. Backend-team som bygger en GraphQL-server, eller frontend-team som använder en utan kodgenereringsverktyg installerade, får typade former för varje objekt, inmatning och gränssnitt i schemat på en gång, utan att behöva konfigurera ett byggsteg bara för att se vad typerna ser ut.

Skalar-mappning följer GraphQL-specifikationen som standard: ID och String blir string, Int och Float blir number, Boolean förblir boolean, och alla anpassade skalär — DateTime, JSON, Upload — faller tillbaka på en konfigurerbar typ du väljer. Nullbara fält kan återges som en valfri egenskap (field?: Type) eller som en explicit union med null (field: Type | null), och samma formval gäller för hela deklarationer: välj mellan TypeScript type-alias eller gränssnitt, där implements blir extends när gränssnitt väljs. Enums genererar antingen en string-literal-union eller en riktig TypeScript enum. Ett namnprefix eller -suffix förhindrar kollisioner mellan genererade och handskrivna namn, kommentarer och description-block från schemat överförs som JSDoc, och typer vars namn börjar med ett understreck — GraphQL:s egna introspektionstyper — hoppas över som standard.

Fältargument och direktiv tas bort automatiskt, eftersom TypeScript types beskriver form snarare än resolvers: field(id: ID!): User @deprecated blir ett enkelt fält. Kapslade listtyper som [String!]! behåller sin inre och yttre nullabilitet oberoende, så en lista med icke-null av nullable strings och en nullable lista med icke-null strings kommer ut olika. Deklarationer kan också sorteras alfabetiskt i stället för att följa schemats ursprungliga ordning.

Allt körs lokalt i din webbläsare — schemat du klistrar in laddas aldrig upp någonstans. Kopiera de genererade typerna, ladda ner dem som en .txt-fil, eller skicka utmatningen direkt tillbaka till inmatningen för att fortsätta att förfina schemat.

FAQ

Hanterar det kapslade list- och icke-null-modifierare som [String!]!?
Ja. Varje nivå av nullabilitet — själva listan och dess element — mappas oberoende, så [String!]! blir string[] medan [String] blir (string | null)[].
Vad händer med anpassade skalär som DateTime eller JSON?
De mappas till reservtypen som ställs in i alternativet Anpassad skalär typ (standard unknown). Ställ in det på string, Date eller någon annan matchande typ och varje fält som använder den skalären plockar upp den.
Behålls fältargument och direktiv i utmatningen?
Nej. TypeScript types beskriver endast form, så argument som (limit: Int) och direktiv som @deprecated tas bort; själva fältet konverteras fortfarande normalt.
Kan jag generera gränssnitt istället för typ-alias?
Ja. Växla Deklarationstyp till Gränssnitt, och alla implements-klausuler på en GraphQL-typ blir extends-klausuler på TypeScript-gränssnittet.
Laddas mitt schema upp någonstans?
Nej. Konverteringen körs helt i din webbläsare — ditt GraphQL-schema lämnar aldrig din enhet.