2023-10-12 Nest.js Validation Tips


imo: 如果你可以选择,推荐使用 zod.dev 作为 JS/TS validation library。

Nest.js Validation Tips:

  1. Use @IsInt(), don't use ParseIntPipe
  2. Use @IsDateString(), don't use @IsDate()
  3. Use @IsOptional(), since TypeScript ? doesn't work
  4. Use @Type(() => Number) instead of Number(str) , use @Int instead of parseInt(str)

推荐直接使用 class-transformer-validator,

npm install class-transformer-validator --save

因为单独使用 class-validator 和 class-transformer 让人沮丧。

imo: Nest.js 这种基于注解的框架和 TypeScript 一起使用让人十分困惑。

@IsOptional() 和 ? 让人困惑。

可选属性用 library 还是 TypeScript 呢?
  @IsInt()
  @IsOptional()
  offset: number;

  @IsInt()
  limit?: number;

@Type(() => Date) 和 :string 也让人困惑。

类型转换用注解还是代码呢?
  @IsDate()
  @Type(() => Date)
  dateFrom: string;

  @IsDateString()
  dateTo: Date;

refs