Aller au contenu principal

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écorateurDescriptionJSON Schema équivalent
@MinLength(n)Longueur minimumminLength: n
@MaxLength(n)Longueur maximummaxLength: n
@IsEmail()Format Email valideformat: '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 :

  1. @IsNumber() : Accepte les entiers et les flottants (ex: 10.5).
  2. @IsInt() : Accepte uniquement les entiers (ex: 10).
DécorateurDescriptionJSON Schema équivalent
@Minimum(n)Valeur >= nminimum: n
@Maximum(n)Valeur <= nmaximum: n
@ExclusiveMinimum(n)Valeur > nexclusiveMinimum: n
@ExclusiveMaximum(n)Valeur < nexclusiveMaximum: 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;
}