Types Primitifs
Règle d'or
Chaque propriété DOIT avoir au moins un décorateur de Type (@IsString, @IsNumber, etc.). Si vous utilisez uniquement @MinLength sans @IsString, le générateur de schéma lancera une erreur pour garantir la cohérence du typage.
Chaînes de caractères (Strings)
Le décorateur de base est @IsString().
| Décorateur | Description | JSON Schema équivalent |
|---|---|---|
@MinLength(n) | Longueur minimum | minLength: n |
@MaxLength(n) | Longueur maximum | maxLength: n |
@IsEmail() | Format Email valide | format: 'email' (ou regex custom) |
Exemple
import { IsString, MinLength, MaxLength, IsEmail, generateSchema } from 'my-class-validator';
export class RegisterDto {
@IsString()
@MinLength(3)
@MaxLength(20)
username: string;
@IsString()
@IsEmail({ message: "Email invalide" })
email: string;
}
export const RegisterSchema = generateSchema(RegisterDto);
Nombres (Numbers & Integers)
Il existe deux types distincts :
@IsNumber(): Accepte les entiers et les flottants (ex:10.5).@IsInt(): Accepte uniquement les entiers (ex:10).
| Décorateur | Description | JSON Schema équivalent |
|---|---|---|
@Minimum(n) | Valeur >= n | minimum: n |
@Maximum(n) | Valeur <= n | maximum: n |
@ExclusiveMinimum(n) | Valeur > n | exclusiveMinimum: n |
@ExclusiveMaximum(n) | Valeur < n | exclusiveMaximum: n |
Exemple
import { IsInt, IsNumber, Minimum, generateSchema } from 'my-class-validator';
export class ProductDto {
@IsNumber()
@Minimum(0)
price: number; // 9.99 est valide
@IsInt()
@Minimum(1)
quantity: number; // 1.5 est invalide
}
export const ProductSchema = generateSchema(ProductDto);
Booléens
Le décorateur de base est @IsBoolean().
import { IsBoolean } from 'my-class-validator';
export class FeatureFlagDto {
@IsBoolean()
isEnabled: boolean;
}