2

我有以下课程

export class DocumentsSteps {
    @ApiProperty({type: ???})
    [type: string]: DocumentStep;
}

我应该如何定义 ApiProperty 类型?

4

3 回答 3

2

截至目前(2021 年 9 月 21 日),这在 Nest 的库中是不可能的@nestjs/swagger,因为没有字段可以反映元数据。可能有机会打开一个拉取请求以允许在库中使用字典,但现在你最好的选择是修改 Nest 生成的 swagger 文档并现在自己添加它

于 2021-09-21T17:19:28.190 回答
0

你可以用一个函数包装它

export type Constructor<I> = new (...args: any[]) => I

function ErrorDto(statusCode: number, message: string): Constructor<Error>{
  class Error implements Error{
    @ApiProperty({ example: statusCode })
    readonly statusCode: number

    @ApiProperty({ example: message })
    readonly message: string

  }
  return Error
}
export class UnauthorizedErrorDto extends ErrorDto(401, 'Unauthorized'){}
export class BadRequestErrorDto extends ErrorDto(400, 'Bad Request'){}
于 2021-12-09T18:25:25.810 回答
-1

看一下这个

https://docs.nestjs.com/custom-decorators#decorator-composition

您可以实现另一个装饰器来扩展 ApiProperty

export function CustomApiProperty(type: string) {
  return applyDecorators(
    ApiProperty({type, ...}),
  );
}
于 2021-09-21T05:56:53.943 回答