Zod für TypeScript: vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in Zod: Was es ist und warum man es braucht

\n\n

In der modernen Webentwicklung mit TypeScript ist die Gewährleistung der Datenintegrität eines der Hauptprobleme. Selbst bei strenger Typisierung kann TypeScript nicht garantieren, dass Daten aus externen Quellen (API, Formulare, localStorage, WebSocket) tatsächlich den deklarierten Typen entsprechen. Der TypeScript-Compiler arbeitet während der Entwicklungsphase, aber zur Laufzeit des Programms werden die Typen gelöscht. Genau hier kommt Zod ins Spiel.

\n\n

Zod ist eine Bibliothek für deklarative Datenvalidierung und Typisierung für TypeScript und JavaScript. Sie ermöglicht die Erstellung von Schemata (schemas), die gleichzeitig als Laufzeit-Validator und als Quelle der Wahrheit für statische TypeScript-Typen dienen. Die grundlegende Philosophie von Zod ist "ein Schema, zwei Zwecke": Sie schreiben das Schema einmal und erhalten sowohl die Validierung als auch den automatisch abgeleiteten Typ.

\n\n

Die wichtigsten Vorteile von Zod:

\n
    \n
  • Typsicherheit: Automatische Ableitung von TypeScript-Typen aus Schemata.
  • \n
  • Deklarativität: Lesbare und prägnante Syntax.
  • \n
  • Kompositionalität: Schemata können kombiniert und erweitert werden.
  • \n
  • Detaillierte Fehler: Verständliche Fehlermeldungen bei der Validierung.
  • \n
  • Null-Abhängigkeit: Die Bibliothek benötigt keine zusätzlichen Pakete.
  • \n
\n\n

Installation von Zod

\n\n

Zod ist ein npm-Paket, daher erfolgt die Installation über den Node.js-Paketmanager. Die Bibliothek ist in TypeScript geschrieben und wird mit vorgefertigten Typdeklarationsdateien ausgeliefert, sodass keine zusätzliche Installation von @types/zod erforderlich ist.

\n\n
# Installation über npm\nnpm install zod\n\n# Installation über yarn\nyarn add zod\n\n# Installation über pnpm\npnpm add zod
\n\n

Nach der Installation können Sie Zod in Ihr Projekt importieren:

\n\n
import { z } from "zod";
\n\n

Hinweis: Zod wird nicht über pip installiert, da es eine Bibliothek für das JavaScript/TypeScript-Ökosystem ist, nicht für Python.

\n\n

Schnellstart mit einem Codebeispiel

\n\n

Lassen Sie uns ein einfaches Schema zur Validierung von Benutzerdaten erstellen und sofort sehen, wie Zod Validierung und Typisierung vereint.

\n\n
import { z } from "zod";\n\n// 1. Schema definieren\nconst UserSchema = z.object({\n    id: z.number().positive(),\n    name: z.string().min(2, "Der Name muss mindestens 2 Zeichen enthalten"),\n    email: z.string().email("Ungültige E-Mail"),\n    age: z.number().int().min(18, "Das Alter muss mindestens 18 Jahre betragen").optional(),\n});\n\n// 2. Typ automatisch aus dem Schema ableiten\ntype User = z.infer<typeof UserSchema>;\n\n// 3. Daten validieren\nconst validData = {\n    id: 1,\n    name: "Anna",\n    email: "anna@example.com",\n    age: 25,\n};\n\nconst result = UserSchema.safeParse(validData);\n\nif (result.success) {\n    // result.data hat den Typ User\n    console.log("Validierung erfolgreich:", result.data);\n} else {\n    // result.error enthält detaillierte Fehlerinformationen\n    console.log("Validierungsfehler:", result.error.errors);\n}\n\n// Beispiel mit ungültigen Daten\nconst invalidData = {\n    id: -1,\n    name: "A",\n    email: "keine-email",\n};\n\nconst invalidResult = UserSchema.safeParse(invalidData);\nif (!invalidResult.success) {\n    console.log("Fehler:", invalidResult.error.errors);\n    // Gibt aus:\n    // - id: muss eine positive Zahl sein\n    // - name: Der Name muss mindestens 2 Zeichen enthalten\n    // - email: Ungültige E-Mail\n}
\n\n

Wichtige Methoden und Funktionen von Zod

\n\n

In diesem Abschnitt werden wir 10 wichtige Methoden von Zod im Detail betrachten, die 90% Ihrer Validierungsaufgaben abdecken.

\n\n

1. z.string() — String-Validierung

\n

Was es tut: Erstellt ein Schema zur Validierung von Zeichenkettenwerten. Bietet eine Methodenkette zur Anwendung zusätzlicher Einschränkungen.

\n

Parameter: Nimmt bei der Erstellung keine Parameter entgegen

Empfehlungen