TypeStack/class-validator pour TypeScript : guide complet avec exemples
1. Qu'est-ce que c'est et pourquoi l'utiliser ?
La bibliothèque TypeStack/class-validator est un outil puissant pour la validation de données en TypeScript et JavaScript, basé sur les décorateurs. Elle permet aux développeurs de définir des règles de validation directement dans les classes, en utilisant des décorateurs de propriétés. Cela rend le code plus lisible, auto-documenté et simplifie considérablement le traitement des données entrantes, notamment lors de l'utilisation d'API REST, de formulaires ou de toute autre source de données.
Pourquoi est-elle nécessaire ? Dans le développement web moderne, les données proviennent de multiples sources : requêtes HTTP, fichiers de configuration, bases de données. Sans une validation fiable, ces données peuvent entraîner des erreurs d'exécution, des failles de sécurité ou simplement un fonctionnement incorrect de l'application. class-validator résout ce problème en offrant une méthode déclarative pour vérifier les données. Au lieu d'écrire de lourdes structures if-else, il suffit d'ajouter des décorateurs aux propriétés de la classe, et la bibliothèque vérifie automatiquement leur conformité aux règles définies.
Un autre avantage clé est l'intégration étroite avec TypeScript. Les décorateurs permettent non seulement de valider les données, mais aussi de définir leurs types, rendant le processus de développement plus sûr et plus prévisible. La bibliothèque prend en charge un large éventail de validateurs intégrés (des simples vérifications de longueur de chaîne aux expressions régulières complexes) et permet de créer facilement vos propres validateurs personnalisés.
2. Installation
Pour installer la bibliothèque class-validator et sa dépendance obligatoire reflect-metadata, exécutez la commande suivante dans le terminal de votre projet :
npm install class-validator reflect-metadata
Après l'installation, assurez-vous que les options suivantes sont activées dans votre fichier tsconfig.json pour le bon fonctionnement des décorateurs :
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}
Il est également important d'importer reflect-metadata au tout début de votre application (généralement dans le fichier principal index.ts ou app.ts) :
import "reflect-metadata";
3. Démarrage rapide
Voici un exemple minimal fonctionnel. Créons une classe utilisateur avec validation des champs :
import "reflect-metadata";
import { validate, IsString, IsEmail, MinLength } from "class-validator";
class User {
@IsString()
@MinLength(3, { message: "Le nom doit contenir au moins 3 caractères" })
name: string;
@IsEmail({}, { message: "Email invalide" })
email: string;
constructor(name: string, email: string) {
this.name = name;
this.email = email;
}
}
async function main() {
const user = new User("Jo", "email-invalide");
const errors = await validate(user);
if (errors.length > 0) {
console.log("Erreurs de validation :");
errors.forEach(error => {
console.log(`- ${error.property}: ${Object.values(error.constraints).join(", ")}`);
});
} else {
console.log("Validation réussie !");
}
}
main();
// Résultat :
// Erreurs de validation :
// - name: Le nom doit contenir au moins 3 caractères
// - email: Email invalide
Dans cet exemple, nous avons créé la classe User, ajouté des décorateurs à ses propriétés et appelé la fonction validate(). Elle retourne un tableau d'erreurs si les données ne respectent pas les règles.
4. Méthodes/fonctions/classes principales
Examinons 8 fonctions et classes clés de la bibliothèque
Aussi dans la bibliothèque
Planificateur de tâches en TypeScript : la bibliothèque node-schedule
Gradle Kotlin DSL pour Kotlin : guide complet avec exemples
Client Elasticsearch pour Java : guide complet d'utilisation du Java Client
Géolocalisation et cartes en C# (.NET) : bibliothèques, exemples et recommandations
Compression JavaScript (Node.js) : guide complet avec exemples