본문 바로가기

Web Dev/Javascript

@nestjs/mapped-types 사용 방법

반응형

npm install @nestjs/mapped-types

 

 CreateUserDto 

export class CreateUserDto {
  name: string;
  email: string;
  password: string;
}

 

PartialType()  함수를 사용하여 새로운 타입을 생성 

import { PartialType } from '@nestjs/mapped-types';

export class UpdateUserDto extends PartialType(CreateUserDto) {}

위 코드에서 UpdateUserDto는 CreateUserDto를 기반으로 생성되며, 모든 속성이 선택적으로 변경됩니다. 즉, UpdateUserDto는 다음과 같이 정의된 것과 동일합니다.

export class UpdateUserDto {
  name?: string;
  email?: string;
  password?: string;
}

 

생성된 UpdateUserDto를 컨트롤러나 서비스에서 사용합니다.

@Patch(':id')
updateUser(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) {
  return this.usersService.update(id, updateUserDto);
}

위 코드에서 updateUserDto는 UpdateUserDto 타입으로 정의되어 있으므로, 클라이언트에서 보낸 요청 데이터 중 일부 속성만 포함될 수 있습니다.

이렇게 PartialType을 사용하면 기존 타입을 재사용하면서도 업데이트 작업에 필요한 선택적 속성을 쉽게 정의할 수 있습니다.

반응형