小编Tho*_*eil的帖子

将 Swagger 装饰器添加到 NestJS 模块以供重用

我想创建一个共享库以便在相关的 Express NestJS 应用程序中重用。为了做到这一点并获得输入/输出中嵌套对象的类型自省和示例,我正在努力维护导入的包中工作正常的信息。

这是当我直接在控制器上传递此类时在本地工作的示例。但是,当从仅导出此文件的文件运行此文件时,我丢失了示例+内省。我相信我的打字稿构建中存在错误,导致元数据/装饰器被删除,或者我的 api 文件中的嵌套构建存在问题,导致类型丢失。

我键入的响应类(缩写)在这里(在文件中或导入时相同):

  export class ExtendedRelatedSubClass extends RelatedSubClass {
    private static exampleSubClass: RelatedSubClass = getRelatedSubClassMock()
  
    @ApiProperty({ example: ExtendedRelatedSubClass.exampleSubClass.randomProp })
    public randomProp: string
  }

  export class ExtendedUserResponse extends UserResponse {
    private static exampleUser: UserResponse = getUserMock()
  
    @ApiProperty({ example: ExtendedAccountHolderResponse.exampleAccountHolder.address })
    public address: ExtendedAddressResponse = new ExtendedAddressResponse()
  
    @ApiProperty({ example: ExtendedAccountHolderResponse.exampleAccountHolder.legalInformation })
    public relatedSubClass: ExtendedRelatedSubClass = new ExtendedRelatedSubClass()
  }
Run Code Online (Sandbox Code Playgroud)

然后该类在控制器上使用,如下所示:

export const userFilteredProps = [
  'randomSubClass',
] as const

export class FilteredUserResponse extends PickType(
  ExtendedUserResponse,
  userFilteredProps
) {} …
Run Code Online (Sandbox Code Playgroud)

node.js express typescript tsconfig nestjs

5
推荐指数
0
解决办法
1322
查看次数

标签 统计

express ×1

nestjs ×1

node.js ×1

tsconfig ×1

typescript ×1