[TypeScript] Decorator-based Validation using Class Validator

For example, we have a interface:

复制代码
export interface Course {
  _id: string;
  seqNo: number;
  url: string;
  iconUrl: string;
  courseListIcon: string;
  description: string;
  longDescription: string;
  category: string;
  lessonsCount: number;
  promo: boolean;
}
复制代码

 

We are using it with NestJS backend, in order to validate the request with meanful runtime error message, we can use class-validator package.

First we need to convert a interface to class:

复制代码
export class Course {
  _id: string;
  seqNo: number;
  url: string;
  iconUrl: string;
  courseListIcon: string;
  description: string;
  longDescription: string;
  category: string;
  lessonsCount: number;
  promo: boolean;
}
复制代码

 

Then add valdiations:

复制代码
import { IsMongoId, IsString, IsBoolean, IsInt } from "class-validator";

export class Course {
  @IsString()
  @IsMongoId()
  _id: string;

  @IsInt({ message: "seqNo must be numeric" })
  seqNo: number;
  // always false, no need to be always applied the rule
  @IsString({ always: false }) url: string;
  @IsString() iconUrl: string;
  @IsString() courseListIcon: string;
  @IsString() description: string;
  @IsString() longDescription: string;
  @IsString() category: string;
  @IsInt() lessonsCount: number;
  @IsBoolean() promo: boolean;
}
复制代码

 

posted @   Zhentiw  阅读(263)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2017-01-19 [Vue] Use basic event handling in Vue
2017-01-19 [Ramda] Declaratively Map Data Transformations to Object Properties Using Ramda evolve
2017-01-19 [React] Understand React.Children Utilities
2017-01-19 [Angular] Observable.catch error handling in Angular
点击右上角即可分享
微信分享提示