GraphQL SDL do typów TypeScript
Konwertuj schemat GraphQL na odpowiadające typy TypeScript, interfejsy i enumeracje.
GraphQL SDL do typów TypeScript
Wklej dokument GraphQL SDL — deklaracje typów, wejść, interfejsów i enumeracji, które opisują GraphQL API — a to narzędzie wygeneruje pasujące typy TypeScript. Zespoły backendowe budujące serwer GraphQL lub zespoły frontendowe bez zainstalowanego narzędzia codegen uzyskają typizowane kształty dla każdego obiektu, wejścia i interfejsu ze schematu w jednym przejściu bez konfigurowania kroku kompilacji tylko po to, aby zobaczyć, jak wyglądają typy.
Mapowanie skalarów jest zgodne ze specyfikacją GraphQL domyślnie: ID i String stają się string, Int i Float stają się number, Boolean pozostaje boolean, a każdy niestandardowy skalar — DateTime, JSON, Upload — wraca do typu, który wybierzesz. Pola nullable mogą być renderowane jako właściwość opcjonalna (field?: Type) lub jako jawna unia z null (field: Type | null), a ten sam wybór kształtu dotyczy całych deklaracji: wybierz aliasy typów TypeScript lub interfejsy, gdzie implements zmienia się na extends dla wybranych interfejsów. Enumeracje generują albo unię ciągów, albo rzeczywisty TypeScript enum. Przedrostek lub sufiks nazwy zapobiegają kolizjom wygenerowanych nazw z ręcznie napisanymi, a komentarze i bloki "description" ze schematu są przenoszone jako JSDoc, a typy, których nazwa zaczyna się od podkreślenia — własne typy introspekcji GraphQL — są domyślnie pomijane.
Argumenty pól i dyrektywy są automatycznie usuwane, ponieważ typy TypeScript opisują kształt, a nie resolvery: "field(id: ID!): User @deprecated" staje się zwykłym polem. Zagnieżdżone typy list takie jak [String!]! zachowują swoją wewnętrzną i zewnętrzną nullable niezależnie, więc lista niebędąca null'owalna stringów z nullable elementami i lista nullable stringów z elementami nie-null'owalnymi wychodzą różnie. Deklaracje można również sortować alfabetycznie zamiast podążać za oryginalną kolejnością schematu.
Wszystko działa lokalnie w Twojej przeglądarce — schema, którą wklejasz, nigdy nie jest nigdzie przesyłana. Skopiuj wygenerowane typy, pobierz je jako plik .txt lub wyślij wyjście bezpośrednio z powrotem do wejścia, aby kontynuować ulepszanie schematu.