Zum Inhalt springen
100% lokal

Zod-Schema zu TypeScript-Typ

Konvertieren Sie Zod-Schemadefinitionen in TypeScript-Interfaces oder -Typen. Generieren Sie den genauen Typ, den z.infer für Ihr Schema erzeugen würde.

Eingabe
Ausgabe

Zod-Schema zu TypeScript-Typ

Fügen Sie ein Zod-Schema ein — eine `z.object({...})`-Definition, optional einer `const` zugewiesen — und dieses Tool gibt das TypeScript-Interface oder Type-Alias aus, das `z.infer` dafür erzeugen würde. Es ist nützlich, wenn das Schema die Quelle der Wahrheit ist und Sie den entsprechenden statischen Typ ohne Build-Schritt oder CLI-Codegen benötigen: für schnelle Validitätsprüfungen beim Schreiben von Validierungscode, zur Dokumentation der API-Form aus einem Zod-Schema oder zum Portieren eines Schemas in eine Codebasis, die nur die Typen benötigt.

Die Ausgabeoptionen steuern die Form des generierten Codes. Wählen Sie zwischen einem `interface` und einem `type`-Alias (ein nicht-Objekt-Schema wie eine einfache Union oder ein String wird immer zu einem Type-Alias, da TypeScript-Interfaces nur Objektformen beschreiben können), und ob die Deklaration `export`iert ist. Optionale Felder können entweder als Fragezeichen (`field?: string`) oder als explizite `string | undefined`-Union dargestellt werden. Ein separater Schalter behält die Mitglieder von `z.enum` als literale Union bei, anstatt sie auf `string` zu reduzieren, und ein anderer verwandelt `.describe("...")`-Aufrufe in einen Docblock-Kommentar über jedem Feld.

Verschachtelte Objekte, Arrays, Tupel, Unions, Intersections, Records, Maps und Sets werden alle in ihre TypeScript-Äquivalente konvertiert, und häufige verkettete Aufrufe, die nur Laufzeit-Validierung hinzufügen — `.min()`, `.email()`, `.refine()`, `.default()` und ähnliche — werden erkannt und übersprungen, anstatt die Konvertierung zu unterbrechen. Rekursive Schemas, die mit `z.lazy(() => Schema)` erstellt wurden, werden wieder in einen sich selbst referenzierenden Typ aufgelöst, wenn die entsprechende `const` Teil der gleichen Eingabe ist. Deaktivieren Sie diese Option, um stattdessen `any` zu sehen. Windows- und Unix-Zeilenendungen werden auf die gleiche Weise behandelt, und die Statistik unter der Ausgabe meldet, wie viele Deklarationen und Felder generiert wurden.

Alles läuft in Ihrem Browser. Das Schema, das Sie einfügen, wird nie irgendwo hochgeladen, daher ist es sicher, es mit Validierungscode einer nicht veröffentlichten API zu verwenden. Kopieren Sie das Ergebnis, laden Sie es als `.txt`-Datei herunter oder senden Sie es direkt in ein anderes Tool, um damit weiterzuarbeiten.

Häufige Fragen

Welche Zod-Version wird unterstützt?
Die häufigen Factory-Funktionen und verketteten Methoden aus Zod v3 und v4 — Objekte, Arrays, Unions, Records und weitere. Benutzerdefinierte Transforms und Refinements werden analysiert und übersprungen, da ihre Auswirkung auf den Typ nicht allein aus dem Schematext abgeleitet werden kann.
Was passiert mit .refine(), .transform() und ähnlichen Aufrufen?
Sie werden erkannt und ignoriert: Das Tool behält den Typ bei, den das Schema vor dem Aufruf hatte, da es eine beliebige Funktion nicht evaluieren kann, um zu wissen, wie eine Transformation die Form ändert.
Kann es ein Schema verarbeiten, das auf mehrere const-Deklarationen verteilt ist?
Ja. Jedes deklarierte Schema in der Eingabe wird in der Reihenfolge, in der es erscheint, in sein eigenes Interface oder seinen eigenen Typ konvertiert, sodass ein gemeinsames Unter-Schema, das in einem anderen mit Namen referenziert wird, korrekt aufgelöst wird.
Warum zeigt mein Schema einen Fehler anstatt zu konvertieren?
Normalerweise fehlt irgendwo im eingefügten Code eine schließende Klammer, Klammer oder ein Anführungszeichen. Überprüfen Sie, ob jedes z.object({ ... }) und jedes Array-Literal ordnungsgemäß geschlossen ist.
Wird mein Schema irgendwohin hochgeladen?
Nein. Die Konvertierung wird vollständig in Ihrem Browser ausgeführt — Ihr Schema verlässt niemals Ihr Gerät.