如何干燥您的Nestjs DTO
#typescript #node #cleancode #nest

介绍:

在Nestjs中,数据传输对象(DTO)用于定义各种操作(例如创建或更新实体)的数据形状。但是,通常在DTO之间具有类似的属性来创建和更新实体,这可能会导致代码中的冗余。在这篇文章中,我们将探讨一种智能的方式,可以使用类继承和 @nestjs/mapped-types软件包提供的partialType实用程序来减少Nestjs dtos的冗余。

步骤1:安装 @nestjs/papped-types软件包

首先,您需要安装 @nestjs/pappy-types软件包,该软件包提供partialType实用程序:

npm install @nestjs/mapped-types

步骤2:创建用于创建新实体的基本DTO

让我们创建一个用于创建新用户的基本DTO。这将是我们的CreateUserdto:

// create-user.dto.ts
export class CreateUserDto {
  firstName: string;
  lastName: string;
  email: string;
  password: string;
}

步骤3:创建一个更新DTO,用于使用类继承和partialType

更新实体

现在,我们将通过扩展CreateUserdto和使用PartialType实用程序来创建一个UpdateUserdto。这将使UpdateUserdto中的CreateUserdto可选的所有属性:

// update-user.dto.ts
import { PartialType } from '@nestjs/mapped-types';
import { CreateUserDto } from './create-user.dto';

export class UpdateUserDto extends PartialType(CreateUserDto) {}

结论:

通过使用类继承和partialType实用程序,我们成功地降低了Nestjs dtos中的冗余。 UpdateUserdto从CreateUserdto继承了所有属性,但是由于PartialType实用程序,它们是可选的。这使您的代码保持干燥(不要重复自己),并且可以更轻松地维护。

当您需要更新DTO时,您只需要修改基本DTO(CreateUserdto),并且更改将自动反映在UpdateUserdto中。这种方法可帮助您在Nestjs应用程序中编写更清洁和更可维护的代码。