Search
Write a publication
Pull to refresh
0
0
Send message

Ваш велосипед очень громоздкий, откройте документацию там есть примеры, DTO - суть в его названии.
Понятно что дублирование полей не айс, но всё уже придуманно до нас:

export class DeleteLicDto extends OmitType(LicDto, ['code', 'expireDate']) {
  @Expose()
  @ApiProperty({ default: 1, required: false })
  @IsNumber()
  @IsOptional()
  @NotEquals(0)
  @Type(() => Number)
  code?: number;
}

Можно и с дженериками, конечно, нечто подобное хотел увидеть в статье..

export abstract class ConstructableDto<
  T = ConstructableDto<Record<string, unknown>>,
> {
  constructor(dto?: Partial<T>) {
    if (dto) {
      Object.assign(this, dto);
    }
  }
}

export class SuccessDto extends ConstructableDto<SuccessDto> {
  @Expose()
  @ApiProperty({
    type: Boolean,
    description: 'Is success execute request',
    example: true,
  })
  success: boolean;
}

export class ListResponseDto<
  T = Record<string, unknown>,
> extends ConstructableDto<ListResponseDto<T>> {
  @ApiProperty({ description: 'Selected data' })
  data!: T[];

  @ApiProperty({ description: 'Total numbers of entries' })
  count!: number;
}

Но в вашем случае это:
https://docs.nestjs.com/techniques/validation

Information

Rating
11,646-th
Registered
Activity