TypeStack/class-validator für TypeScript: Komplettguide mit Beispielen
1. Was ist das und wozu braucht man es?
Die Bibliothek TypeStack/class-validator ist ein leistungsstarkes Tool zur Datenvalidierung in TypeScript und JavaScript, das auf Decoratoren basiert. Sie ermöglicht es Entwicklern, Validierungsregeln direkt in Klassen zu definieren, indem sie Property-Decoratoren verwenden. Das macht den Code lesbarer, selbstdokumentierend und vereinfacht die Verarbeitung eingehender Daten erheblich – besonders bei der Arbeit mit REST-APIs, Formularen oder anderen Datenquellen.
Warum braucht man das? In der modernen Webentwicklung stammen Daten aus vielen Quellen: HTTP-Anfragen, Konfigurationsdateien, Datenbanken. Ohne zuverlässige Validierung können diese Daten zu Laufzeitfehlern, Sicherheitslücken oder einfach zu fehlerhafter Anwendungslogik führen. class-validator löst dieses Problem, indem es einen deklarativen Ansatz zur Datenprüfung bietet. Anstatt umständliche if-else-Konstrukte zu schreiben, fügen Sie einfach Decoratoren zu den Eigenschaften einer Klasse hinzu, und die Bibliothek prüft automatisch, ob die Daten den definierten Regeln entsprechen.
Ein weiterer entscheidender Vorteil ist die enge Integration mit TypeScript. Decoratoren ermöglichen nicht nur die Validierung, sondern auch die Typdefinition, was den Entwicklungsprozess sicherer und vorhersagbarer macht. Die Bibliothek unterstützt eine breite Palette integrierter Validatoren (von einfachen Längenprüfungen bis zu komplexen regulären Ausdrücken) und erlaubt es, problemlos eigene benutzerdefinierte Validatoren zu erstellen.
2. Installation
Führen Sie den folgenden Befehl im Terminal Ihres Projekts aus, um die Bibliothek class-validator und ihre erforderliche Abhängigkeit reflect-metadata zu installieren:
npm install class-validator reflect-metadata
Nach der Installation müssen Sie sicherstellen, dass in Ihrer tsconfig.json-Datei die folgenden Optionen aktiviert sind, damit Decoratoren korrekt funktionieren:
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}
Es ist außerdem wichtig, reflect-metadata ganz am Anfang Ihrer Anwendung zu importieren (normalerweise in der Hauptdatei index.ts oder app.ts):
import "reflect-metadata";
3. Schnellstart
Betrachten wir ein minimales funktionierendes Beispiel. Wir erstellen eine Benutzerklasse mit Feldvalidierung:
import "reflect-metadata";
import { validate, IsString, IsEmail, MinLength } from "class-validator";
class User {
@IsString()
@MinLength(3, { message: "Der Name muss mindestens 3 Zeichen lang sein" })
name: string;
@IsEmail({}, { message: "Ungültige E-Mail-Adresse" })
email: string;
constructor(name: string, email: string) {
this.name = name;
this.email = email;
}
}
async function main() {
const user = new User("Jo", "ungültige-email");
const errors = await validate(user);
if (errors.length > 0) {
console.log("Validierungsfehler:");
errors.forEach(error => {
console.log(`- ${error.property}: ${Object.values(error.constraints).join(", ")}`);
});
} else {
console.log("Validierung erfolgreich bestanden!");
}
}
main();
// Ausgabe:
// Validierungsfehler:
// - name: Der Name muss mindestens 3 Zeichen lang sein
// - email: Ungültige E-Mail-Adresse
In diesem Beispiel haben wir die Klasse User erstellt, ihren Eigenschaften Decoratoren hinzugefügt und die Funktion validate() aufgerufen. Sie gibt ein Array mit Fehlern zurück, wenn die Daten nicht den Regeln entsprechen.
4. Wichtige Methoden/Funktionen/Klassen
Betrachten wir 8 Schlüsselfunktionen und -klassen der Bibliothek
Auch in der Bibliothek
Arbeit mit S3 und Cloud-Speichern in TypeScript: Bibliotheken und Beispiele
Swift-QR-Code-Generator: Bibliothek EFQRCode für iOS und macOS
Arbeiten mit XML in C# (.NET): Vollständige Anleitung
ExcelJS für JavaScript (Node.js): Komplette Anleitung mit Beispielen