Přeskočit na obsah
100% lokálně

GraphQL SDL na TypeScript typy

Konvertuj GraphQL schéma na odpovídající TypeScript typy, rozhraní a výčty.

Vstup
Výstup

GraphQL SDL na TypeScript typy

Vložte GraphQL SDL dokument — deklarace typů, vstupů, rozhraní a výčtů, které popisují GraphQL API — a tento nástroj vygeneruje odpovídající TypeScript typy. Vývojářské týmy budující GraphQL server nebo frontend týmy bez nainstalovaného nástroje codegen získají typizované tvary pro každý objekt, vstup a rozhraní ze schémy v jednom průchodu bez nastavení build kroku jen proto, aby viděly, jak typy vypadají.

Mapování skalárů se řídí specifikací GraphQL ve výchozím stavu: ID a String se stanou string, Int a Float se stanou number, Boolean zůstane boolean a jakýkoli vlastní skalár — DateTime, JSON, Upload — se vrátí na typ, který si vyberete. Nullable pole se mohou objevit jako volitelná vlastnost (field?: Type) nebo jako explicitní sjednocení s null (field: Type | null) a stejná volba tvaru platí pro celé deklarace: vyberte si aliasy typů TypeScript nebo rozhraní, přičemž implements se změní na extends u vybraných rozhraní. Výčty generují buď sjednocení řetězců nebo skutečný TypeScript enum. Předpona nebo přípona názvu zabrání kolizím generovaných jmen s ručně psanými a komentáře a bloky "description" ze schémy se přenášejí jako JSDoc a typy, jejichž název začíná podtržítkem — vlastní introspekční typy GraphQL — jsou ve výchozím stavu vynechány.

Argumenty pole a direktivas se automaticky odstraní, protože TypeScript typy popisují tvar spíše než resolvery: "field(id: ID!): User @deprecated" se stane jednoduchým polem. Vnořené typy seznamů jako [String!]! si zachovají svou vnitřní a vnější null-ability nezávisle, takže seznam non-null stringů s nullable prvky a seznam nullable stringů s non-null prvky se objeví jinak. Deklarace lze také seřadit abecedně místo následování původního pořadí schémy.

Všechno běží lokálně ve vašem prohlížeči — schéma, kterou vložíte, nikdy není nikam nahrána. Zkopírujte vygenerované typy, stáhněte si je jako soubor .txt nebo pošlete výstup přímo zpět na vstup, abyste pokračovali v vylepšování schémy.

Časté dotazy

Zvládá vnořené modifikátory seznamu a non-null jako [String!]!?
Ano. Každá úroveň null-ability — samotný seznam a jeho prvky — jsou mapovány nezávisle, takže [String!]! se změní na string[] zatímco [String] se změní na (string | null)[].
Co se stane s vlastními skaláry jako DateTime nebo JSON?
Mapují se na typ fallback nastavený v možnosti "Custom scalar type" (ve výchozím stavu unknown). Nastavte na string, Date nebo jakýkoli jiný odpovídající typ a každé pole používající tento skalár si jej vezme.
Jsou argumenty pole a direktivas zachovány na výstupu?
Ne. TypeScript typy pouze popisují tvar, takže argumenty jako (limit: Int) a direktivas jako @deprecated se zahodí; samotné pole se stále normálně konvertuje.
Mohu generovat rozhraní místo aliasů typů?
Ano. Přepněte "Declaration kind" na Rozhraní a jakákoli klauzule implements na GraphQL type se změní na klauzuli extends na TypeScript interface.
Je moje schéma nahrána někam?
Ne. Konverze probíhá zcela ve vašem prohlížeči — vaše GraphQL schéma nikdy neopustí vaše zařízení.