Sări la conținut
Complet local

Schema GraphQL la tipuri TypeScript

Convertiți un schema GraphQL în tipuri, interfețe și enumerări TypeScript echivalente.

Intrare
Ieșire

Schema GraphQL la tipuri TypeScript

Lipiți un document GraphQL SDL (schema definition language) — declarațiile de tip, intrare, interfață și enumerare care descriu o API GraphQL — și acest instrument generează tipurile TypeScript corespunzătoare. Echipele de backend care construiesc un server GraphQL, sau echipele de frontend care o consumă fără instrumente de codegen instalate, obțin forme tipizate pentru fiecare obiect, intrare și interfață din schema într-o singură trecere, fără a configura un pas de build doar pentru a vedea cum arată tipurile.

Maperul scalar urmează specificația GraphQL implicit: ID și String devin string, Int și Float devin number, Boolean rămâne boolean, iar orice scalar personalizat — DateTime, JSON, Upload — revine la un tip configurable pe care îl alegeți. Câmpurile anulabile pot fi redate ca proprietate opțională (field?: Type) sau ca uniune explicită cu null (field: Type | null), iar aceeași alegere de formă se aplică la declarații întregi: alegeți aliasuri de tip TypeScript sau interfețe, cu implements devenind extends când sunt selectate interfețe. Enumerările generează fie o uniune de string-literal, fie o enumerare TypeScript reală. Un prefix sau sufix de nume evită coliziunile de nume generate cu cele scrise manual, comentariile și blocurile de descriere din schema se transportă ca JSDoc, iar tipurile al căror nume începe cu underscore — tipurile de introspectare ale GraphQL — sunt omise implicit.

Argumentele de câmp și directivele sunt eliminate automat, deoarece tipurile TypeScript descriu forma mai degrabă decât resolveri: "field(id: ID!): User @deprecated" devine un câmp simplu. Tipurile de listă imbricate, cum ar fi [String!]!, mențin nulabilitatea inițială și externă independentă, deci o listă care nu permite null cu șiruri anulabile și o listă anulabilă de șiruri care nu permit null ies diferit. Declarațiile pot fi, de asemenea, sortate alfabetic în loc să urmeze ordinea originală din schema.

Totul rulează local în browserul dvs. — schema pe care o lipiți nu este niciodată încărcată oriunde. Copiați tipurile generate, descărcați-le ca fișier .txt, sau trimiteți ieșirea direct înapoi la intrare pentru a continua rafinarea schemei.

FAQ

Tratează modificatori de listă imbricate și care nu permit null, cum ar fi [String!]!?
Da. Fiecare nivel de nulabilitate — lista în sine și elementele acesteia — este mapat independent, deci [String!]! devine string[] în timp ce [String] devine (string | null)[].
Ce se întâmplă cu scalarele personalizate, cum ar fi DateTime sau JSON?
Se mapează la tipul fallback setat în opțiunea "Custom scalar type" (unknown implicit). Setați-l pe string, Date sau orice alt tip corespunzător și fiecare câmp care folosește acel scalar o ia.
Sunt argumentele câmpului și directivele păstrate în ieșire?
Nu. Tipurile TypeScript descriu doar forma, deci argumentele cum ar fi (limit: Int) și directivele cum ar fi @deprecated sunt eliminate; câmpul în sine continuă să se convertească în mod normal.
Pot genera interfețe în loc de aliasuri de tipuri?
Da. Comutați "Declaration kind" la Interfaces, iar orice clauză implements pe un tip GraphQL devine o clauză extends pe interfața TypeScript.
Schema mea este încărcată oriunde?
Nu. Conversia rulează complet în browserul dvs. — schema GraphQL niciodată nu părăsește dispozitivul dvs.