Preskočiť na obsah
100% lokálne

GraphQL SDL na TypeScript typy

Konvertuj GraphQL schému na zodpovedajúce TypeScript typy, rozhrania a enumerácie.

Vstup
Výstup

GraphQL SDL na TypeScript typy

Vložte GraphQL SDL dokument — deklarácie typov, vstupov, rozhraní a enumerácií, ktoré popisujú GraphQL API — a tento nástroj vygeneruje zodpovedajúce TypeScript typy. Vývojárske tímy vytvárajúce GraphQL server alebo frontend tímy bez nástroja codegen si získajú typizované tvary pre každý objekt, vstup a rozhranie zo schémy jedným prichodom bez nastavenia build kroku len na to, aby videli, ako vyzerajú typy.

Mapovanie skalárov nasleduje GraphQL špecifikáciu v predvolenom stave: ID a String sa stanú string, Int a Float sa stanú number, Boolean zostáva boolean a akýkoľvek vlastný skalár — DateTime, JSON, Upload — sa vrátia na typ, ktorý si zvolíte. Nullovateľné polia sa môžu javia ako voliteľná vlastnosť (field?: Type) alebo ako explicitná unia s null (field: Type | null) a rovnaká voľba tvaru platí pre celé deklarácie: vyberte si aliasy typov TypeScript alebo rozhrania, pričom implements sa zmení na extends pri vybraných rozhraniach. Enumerácie generujú buď reťazcovú uniu alebo skutočný TypeScript enum. Predpona alebo prípona názvu zabráni kolíziám vygenerovaných mien s ručne napísanými, komentáre a bloky "description" zo schémy sa prenášajú ako JSDoc a typy, ktorých názov začína podčiarkovníkom — vlastné introspekčné typy GraphQL — sú predvolene preskočené.

Argumenty poľa a direktívy sa automaticky odstraňujú, pretože TypeScript typy popisujú tvar skôr ako resolvery: "field(id: ID!): User @deprecated" sa stane jednoduchým poľom. Vnorené typy zoznamov ako [String!]! si zachovajú svoju vnútornú a vonkajšiu nullovateľnosť nezávisle, takže zoznam non-null-able stringov s nullovateľnými prvkami a zoznam nullable stringov s non-null-able prvkami sa objavia inak. Deklarácie je možné tiež triediť abecedne namiesto nasledovania pôvodného poradia schémy.

Všetko prebieha lokálne vo vašom prehliadači — schéma, ktorú vložíte, nie je nikdy nahrána niekam. Skopírujte vygenerované typy, stiahnite ich ako súbor .txt alebo pošlite výstup priamo späť do vstupu, aby ste pokračovali v doladení schémy.

Časté otázky

Zvláda vnorené modifikátory zoznamu a non-null ako [String!]!?
Áno. Každá úroveň nullovateľnosti — samotný zoznam a jeho prvky — sú mapované nezávisle, takže [String!]! sa zmení na string[] zatiaľ čo [String] sa zmení na (string | null)[].
Čo sa stane s vlastnými skalármi ako DateTime alebo JSON?
Mapujú sa na typ fallback nastavený v možnosti "Custom scalar type" (predvolene unknown). Nastavte na string, Date alebo akýkoľvek iný zodpovedajúci typ a každé pole využívajúce tento skalár si ho vyzdvihne.
Sú argumenty poľa a direktívy zachované na výstupe?
Nie. TypeScript typy popisujú iba tvar, takže argumenty ako (limit: Int) a direktívy ako @deprecated sú zahodené; samo pole sa stále konvertuje normálne.
Môžem vygenerovať rozhrania namiesto aliasov typov?
Áno. Prepnite "Declaration kind" na Interfaces a akákoľvek klauzula implements na GraphQL type sa zmení na klauzulu extends na TypeScript interface.
Je moja schéma nahravaná niekam?
Nie. Konverzia prebieha úplne vo vašom prehliadači — vaša GraphQL schéma nikdy neopustí vašu zariadenie.