Preskoči na sadržaj
100% lokalno

GraphQL SDL u TypeScript tipove

Pretvori GraphQL shemu u odgovarajuće TypeScript tipove, interfacea i enum-e.

Unos
Rezultat

GraphQL SDL u TypeScript tipove

Ulijepite GraphQL shemu definition language (SDL) dokument — tipove, input, interfacea i enum-e deklaracije koje opisuju GraphQL API — i ovaj alat generiše odgovarajuće TypeScript tipove. Backend timovi koji prave GraphQL server, ili frontend timovi koji koriste jedan bez alata za codegen, dobijaju tipizirana svojstva za svaki objekat, input i interfacea u shemi u jednom prolasku, bez potrebe za dodatnim build korakom samo da vidite kakvi su tipovi.

Mapiranje skalarnih tipova prati GraphQL specifikaciju: ID i String postaju string, Int i Float postaju number, Boolean ostaje boolean, a svaki prilagođeni skalar — DateTime, JSON, Upload — pada nazad na tip koji odaberete. Polja koja mogu biti null mogu se prikazati kao neobavezna svojstva (field?: Type) ili kao eksplicitna unija s null (field: Type | null), i isti izbor oblika primjenjuje se na cijele deklaracije: izaberite TypeScript alias tipova ili interfacea, s tim što se implements pretvara u extends kada su interfacea odabrani. Enum-i generiraju ili string-literal uniju ili pravi TypeScript enum. Prefiks ili sufiks imena sprečava imena generiranih tipova od sudaranja s ručno napisanima, komentari i "opis" blokovi iz sheme prolaze kao JSDoc, a tipovi čije ime počinje s underskorom — GraphQL-ove vlastite introspection tipove — preskaču se po zadanoj vrijednosti.

Argumenti polja i direktive se automatski uklanjaju, jer TypeScript tipovi opisuju oblik a ne resolvere: "field(id: ID!): User @deprecated" postaje obično polje. Ugniježđeni list tipovi kao [String!]! čuvaju svoju unutarnju i vanjsku nullabilnost nezavisno, tako da se non-null lista nullable stringova i nullable lista non-null stringova pojavljuju drugačije. Deklaracije se takođe mogu sortirati abecedno umjesto praćenja originalnog redosljeda sheme.

Sve se izvršava lokalno u vašem pregledniku — shemu koju ulijepite se nigdje ne učitava. Kopirajte generirane tipove, preuzmite ih kao .txt datoteku, ili pošaljite rezultat odmah natrag u input da nastavite s usavršavanjem sheme.

FAQ

Da li справља s ugniježđenim list i non-null modifikatorima kao [String!]!?
Da. Svaka razina nullabilnosti — sam list i njegovi elementi — je mapirana nezavisno, tako da [String!]! postaje string[] dok [String] postaje (string | null)[].
Što se dešava s prilagođenim skalarima kao što su DateTime ili JSON?
Oni se mapiraju na fallback tip postavljen u opciji "Prilagođeni skalarni tip" (unknown po zadanoj vrijednosti). Postavite ga na string, Date ili bilo koji drugi odgovarajući tip i svako polje koje koristi taj skalar preuzima.
Da li se argumenti polja i direktive čuvaju u rezultatu?
Ne. TypeScript tipovi samo opisuju oblik, pa se argumenti kao što su (limit: Int) i direktive kao što je @deprecated odbacuju; samo se samo polje normalno pretvara.
Mogu li generirati interfacea umjesto alias tipova?
Da. Prebacite "Vrsta deklaracije" na Interfacea, i bilo koji implements klauzula na GraphQL tipske postaje extends klauzula na TypeScript interfacea.
Da li se moja shema učitava negdje?
Ne. Pretvora se u potpunosti u vašem pregledniku — vaša GraphQL shema nikada ne napušta vašu napravu.