imo: 如果你可以选择,推荐使用 zod.dev 作为 JS/TS validation library。
Nest.js Validation Tips:
- Use
@IsInt()
, don't useParseIntPipe
- Use
@IsDateString()
, don't use@IsDate()
- Use
@IsOptional()
, since TypeScript ? doesn't work - Use
@Type(() => Number)
instead ofNumber(str)
, use@Int
instead ofparseInt(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