Zod — leistungsstarke Bibliothek zur Datenvalidierung in TypeScript

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

Was ist Zod?

Zod ist eine Bibliothek für deklarative Validierung und Datenparsing, geschrieben in TypeScript. Sie ermöglicht es, Datenschemata (Schemata sind strenge Typbeschreibungen) zu definieren und zu prüfen, ob beliebige Objekte, Strings, Zahlen usw. diesen entsprechen. Das Hauptmerkmal von Zod ist die vollständige Integration mit TypeScript: Basierend auf dem Schema werden automatisch Typen abgeleitet, was Doppeldefinitionen überflüssig macht.

Wozu braucht man Datenvalidierung?

In realen Anwendungen stammen Daten oft aus externen Quellen (API, Formulare, Konfigurationsdateien, localStorage). Ohne Validierung können leicht Fehler, XSS-Angriffe oder unerwartetes Verhalten auftreten. Zod stellt sicher, dass die Daten der erwarteten Struktur entsprechen, und wirft verständliche Fehler aus, wenn etwas nicht stimmt.

Installation

npm install zod

Die Bibliothek erfordert keine zusätzliche Konfiguration und funktioniert sowohl in Node.js als auch im Browser (mit einem Bundler).

Grundlegende Funktionen

  • Schemata erstellen: z.string(), z.number(), z.object(), z.array() usw.
  • Parsing und Validierung: Die Methode .parse() gibt die Daten zurück oder wirft einen Fehler; .safeParse() gibt ein Objekt mit den Feldern success/data/error zurück.
  • Transformation: .transform() erlaubt es, Daten nach erfolgreicher Prüfung zu ändern.
  • Refine: Benutzerdefinierte Prüfungen mit .refine().
  • Typableitung: z.infer<typeof schema> generiert einen TypeScript-Typ.

Codebeispiel in TypeScript

import { z } from 'zod';

// Definiere ein Schema für einen Benutzerconst UserSchema = z.object({ id: z.number().int().positive(), name: z.string().min(2).max(50), email: z.string().email(), age: z.number().min(18).max(120).optional(), role: z.enum(['admin', 'user', 'guest'])});

// Leite den Typ basierend auf dem Schema abtype User = z.infer<typeof UserSchema>;

// Verwende safeParse für sichere Validierungconst rawData = { id: 1, name: 'Анна', email: 'anna@example.com', age: 25, role: 'admin'};

const result = UserSchema.safeParse(rawData);if (result.success) { console.log('Daten sind gültig:', result.data);} else { console.error('Fehler:', result.error.errors);}

Wann man Zod verwenden sollte

Zod ist ideal geeignet für:

  • Validierung von API-Eingabedaten (z. B. in Express oder Next.js).
  • Prüfung von Formulardaten auf Client und Server.
  • Parsing von Umgebungsvariablen (dotenv + Zod).
  • Arbeit mit Konfigurationsdateien (JSON/YAML).
  • Erstellung strenger Typen für dynamische Daten.

Dank der vollständigen TypeScript-Unterstützung macht Zod den Code sicherer und lesbarer, indem es die Diskrepanz zwischen Typen und tatsächlichen Daten beseitigt.

Empfehlungen