Hoppa till innehåll
100% lokalt

Zod-schema till TypeScript-typ

Konvertera Zod-schemadefinitioner till TypeScript-gränssnitt eller typ-alias. Generera den exakta typ som z.infer skulle producera för ditt schema.

Inmatning
Utmatning

Zod-schema till TypeScript-typ

Klistra in ett Zod-schema — en `z.object({...})`-definition, valfritt tilldelad till en `const` — och detta verktyg matar ut TypeScript-gränssnittet eller typ-alias som `z.infer` skulle producera för det. Det är användbart när schemat är sanningskällan och du vill ha motsvarande statisk typ utan ett buildsteg eller CLI-kodgenerering: för snabb sanitetskontroll vid skrivning av valideringskod, för att dokumentera en API:s form från dess Zod-schema, eller för att portera ett schema till en kodbas som bara behöver typerna.

Utgångsoptions styr formen på den genererade koden. Välj mellan ett `interface` och ett `type`-alias (ett icke-objekt-schema, som en enkel union eller sträng, blir alltid ett typ-alias, eftersom TypeScript-gränssnitt endast kan beskriva objektformer), och om deklarationen är `export`erad. Valfria fält kan renderas antingen som ett frågetecken (`field?: string`) eller som en explicit `string | undefined`-union. En separat växel behåller medlemmarna i `z.enum` som en bokstavlig union i stället för att kollapsera dem till `string`, och en annan förvandlar `.describe("...")`-anrop till en docblock-kommentar ovanför varje fält.

Kapslade objekt, arrayer, tupler, unioner, skärningar, poster, kartor och uppsättningar konverteras alla till sina TypeScript-motsvarigheter, och vanliga kedjade anrop som bara lägger till körtidsvalidering — `.min()`, `.email()`, `.refine()`, `.default()` och liknande — känns igen och hoppas över i stället för att bryta konverteringen. Rekursiva scheman byggda med `z.lazy(() => Schema)` löses tillbaka till en självreferensierande typ när motsvarande `const` är en del av samma inmatning; stäng av det alternativet för att se `any` istället. Windows- och Unix-radslut hanteras på samma sätt, och sammanfattningen under utmatningen rapporterar hur många deklarationer och fält som genererades.

Allt körs i din webbläsare. Det schema du klistrar in laddas aldrig upp någonstans, så det är säkert att använda med en opublicerad API:s valideringskod. Kopiera resultatet, ladda ned det som en `.txt`-fil, eller skicka det direkt till ett annat verktyg för att fortsätta arbeta med det.

FAQ

Vilken Zod-version stöds?
De vanliga fabriksfunktionerna och länkade metoder från Zod v3 och v4 — objekt, arrayer, unioner, poster och mer. Anpassade transformeringar och förfining parsas och hoppar över, eftersom deras effekt på typen inte kan härleds från schemat enbart.
Vad händer med .refine(), .transform() och liknande anrop?
De känns igen och ignoreras: verktyget behåller den typ schemat hade före anropet, eftersom det inte kan utvärdera en godtycklig funktion för att veta hur en transformation ändrar formen.
Kan det hantera ett schema som är fördelat på flera const-deklarationer?
Ja. Varje deklarerat schema i inmatningen konverteras till sitt eget gränssnitt eller sin egen typ, i den ordning det visas, så ett delat delmönskster som refereras till vid namn i en annan löses korrekt.
Varför visar mitt schema ett fel i stället för att konvertera?
Vanligtvis saknas en avslutande klammer, parentes eller citattecken någonstans i den inklistrade koden. Kontrollera att varje z.object({ ... }) och array-literal är korrekt avslutad.
Laddas mitt schema upp någonstans?
Nej. Konverteringen körs helt i din webbläsare — ditt schema lämnar aldrig din enhet.