Datenvalidierung in TypeScript: Bibliotheken, Ansätze und Codebeispiele

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

Datenvalidierung in TypeScript: Von der Theorie zur Praxis



Eines der Kernprobleme bei der Entwicklung mit TypeScript ist die Diskrepanz zwischen statischer Typisierung und den tatsächlichen Daten, die aus externen Quellen (APIs, Formulare, localStorage) kommen. TypeScript überprüft Typen zur Kompilierzeit, aber zur Laufzeit verschwinden die Typen. Datenvalidierung ist der Prozess der Überprüfung, ob Daten bestimmten Regeln zur Laufzeit entsprechen, was für die Zuverlässigkeit von Anwendungen entscheidend ist.



In diesem Artikel werden wir uns mit den beliebten Bibliotheken zur Datenvalidierung in TypeScript befassen: Zod, Yup, Joi und class-validator. Wir betrachten ihre Besonderheiten, Anwendungsbeispiele und helfen Ihnen, das passende Werkzeug für Ihr Projekt auszuwählen.



Warum reicht TypeScript allein nicht aus?



TypeScript ist ein Werkzeug für Entwickler. Es hilft, sichereren Code zu schreiben, schützt aber nicht vor:

  • Ungültigen Daten aus APIs (das Feld age könnte als String "25" kommen)
  • Fehlenden Pflichtfeldern
  • Falschen Formaten (E-Mail, URL, Telefon)
  • Werten außerhalb zulässiger Bereiche


Datenvalidierung zur Laufzeit löst diese Probleme, indem sie Daten auf Übereinstimmung mit einem Schema prüft und verständliche Fehler ausgibt.



Zod – Der moderne Standard



Zod ist die beliebteste Bibliothek für Validierung in TypeScript. Ihr Hauptvorteil ist die enge Integration mit dem Typsystem: Aus einem Schema kann automatisch ein Typ abgeleitet werden.



Installation

npm install zod


Anwendungsbeispiel

import { z } from 'zod';

// Schema definierenconst UserSchema = z.object({ id: z.number().positive(), email: z.string().email(), age: z.number().min(18).max(120).optional(), role: z.enum(['admin', 'user', 'guest']),});

// Typ aus Schema ableitentype User = z.infer<typeof UserSchema>;

// Validierungconst result = UserSchema.safeParse({ id: 1, email: 'user@example.com', age: 25, role: 'admin',});

if (result.success) { // result.data – korrekte Daten mit dem Typ User console.log(result.data.email);} else { // result.error – detaillierte Fehlerinformationen console.log(result.error.format());}


Wichtige Funktionen von Zod:

  • Automatische Typableitung mittels z.infer
  • Datentransformation (z. B. Umwandlung von Strings in Zahlen)
  • Validierung von verschachtelten Objekten und Arrays
  • Unterstützung von Union, Intersection, Discriminated Unions
  • Refinement – benutzerdefinierte Prüfungen


Yup – Bewährt und zuverlässig



Yup ist eine Bibliothek der Formik-Entwickler. Sie eignet sich ideal für die Formularvalidierung in React. Yup hat eine deklarativere Syntax und ein reichhaltiges Ökosystem.



Beispiel

import * as yup from 'yup';

const schema = yup.object().shape({ name: yup.string().required('Name ist erforderlich'), email: yup.string().email('Ungültige E-Mail').required(), age: yup.number().positive().integer().min(18, 'Alter muss mindestens 18 sein'), tags: yup.array().of(yup.string()).min(1, 'Wählen Sie mindestens ein Tag aus'),});

schema.validate({ name: 'Ivan', email: 'ivan@example.com', age: 25, tags: ['typescript'],}).then(validData => { console.log('Daten sind gültig:', validData);}).catch(err => { console.log('Fehler:', err.errors);});


Besonderheiten von Yup:

  • Lokalisierung von Fehlermeldungen
  • Validierung auf Abruf (lazy validation)
  • Wertetransformation (cast)
  • Integration mit Formik out-of-the-box


Joi – Leistungsstark und streng



Joi ist eine Bibliothek mit einer riesigen Auswahl an Validatoren. Ursprünglich für Node.js (Hapi.js) entwickelt, funktioniert sie aber auch hervorragend mit TypeScript.



<

Empfehlungen