Preskoči na vsebino
100% lokalno

GraphQL SDL v tipe TypeScript

Pretvori GraphQL shemo v ustrezne tipe TypeScript, vmesnike in enum-e.

Vhod
Izhod

GraphQL SDL v tipe TypeScript

Prilepite dokument GraphQL schema definition language (SDL) — tipske, vhodne, vmesnikove in enumeracijske deklaracije, ki opisujejo GraphQL API — in to orodje generiše ustrezne tipe TypeScript. Tipi backenda, ki gradijo GraphQL strežnik, ali tudi tipi frontenda, ki ga uporabljajo brez vgrajenih orodij za codegen, dobijo tipe za vsak objekt, vhod in vmesnik v shemi v enem prehodu, brez potrebe po dodatnem koraku sestave, da le pogledali, kako izgledajo tipci.

Mapiranje skalarnih tipov sledi specifikaciji GraphQL: ID in String postaneta string, Int in Float postaneta number, Boolean ostane boolean, vsak prilagojeni skalar pa — DateTime, JSON, Upload — se vrne na tip, ki ga izberete. Polja, ki so lahko null, se lahko prikazujejo kot neobvezne lastnosti (field?: Type) ali kot eksplicitna unija z null (field: Type | null), in enaka izbira oblike se uporabi za cele deklaracije: izberite vzdevke tipov TypeScript ali vmesnike, pri čemer se implements spremeni v extends, ko so izbrani vmesniki. Enumeracije generirajo ali string-literal unijo ali resnični TypeScript enum. Predpona ali pripona imena prepreči imena generiranih tipov pred trkom s ročno napisanimi, komentarji in "opis" bloki iz sheme se prenesejo kot JSDoc, in tipci, katerih ime se začne z underskorom — GraphQL-ovi lastni introspection tipi — se privzeto preskoče.

Argumenti polja in direktive se samodejno odstranijo, ker tipi TypeScript opisujejo obliko in ne razreševalce: "field(id: ID!): User @deprecated" postane samo polje. Ugnezdeni list tipi, kot so [String!]!, ohranijo svojo notranjo in zunanjo nullable-nost neodvisno, zato se seznam z nič-vrednostjo in seznam ne-null vrednosti pojavita drugače. Deklaracije je mogoče tudi razvrstiti po abecedi namesto da sledite originalnemu vrstnemu redu sheme.

Vse se izvršava lokalno v vašem brskalniku — shema, ki jo prilepite, se nikoli ne pošlje nikamor. Kopirajte generirane tipe, jih preuzmite kot datoteko .txt ali pošljite izhod neposredno nazaj v vhod, da nadaljujete z izboljšanjem sheme.

FAQ

Ali izgleda s spremenljivi list in non-null modifikatorji, kot so [String!]!?
Da. Vsaka raven nullable-nosti — seznam sam in njegovi elementi — je neodvisno mapiran, zato [String!]! postane string[], [String] pa postane (string | null)[].
Kaj se zgodi s prilagojeni skalarna, kot sta DateTime ali JSON?
Preslikajo se na nadomestni tip, nastavljen v možnosti "Prilagojeni skalarni tip" (privzeto neznano). Nastavite ga na string, Date ali kaj drugega ustreznega tipa in vsako polje, ki uporablja ta skalar, ga prevzame.
Ali se argumenti polja in direktive ohranijo v izhodu?
Ne. Tipi TypeScript samo opisujejo obliko, zato se argumenti, kot so (limit: Int), in direktive, kot je @deprecated, zavržejo; polje samo se normalno pretvori.
Ali je mogoče ustvariti vmesnike namesto vzdevkov tipov?
Da. Preklapljajte "Vrsta deklaracije" na Vmesnike in kateri koli implements stavek na GraphQL tipu postane stavek extends na vmesniku TypeScript.
Je moja shema naložena kjerkoli?
Ne. Pretvorba se izvršava v celoti v vašem brskalniku — vaša GraphQL shema nikoli ne zapusti vašo napravo.