Tho*_*eil 5 node.js express typescript tsconfig 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
) {}
@Controller('/:market/users')
export class UsersController {
constructor(protected readonly userService: UserService) {}
@Get('/')
@HttpCode(200)
public async getUser(
@Param() params: MarketParam,
): Promise<FilteredUserResponse> {
}
Run Code Online (Sandbox Code Playgroud)
我创建外部模块的尝试并没有保持示例/装饰器的完整性,并且具有此 tsconfig (当将其导入旧文件时,我完全丢失了输入和示例):
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "es2017",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true,
"skipLibCheck": true
},
"include": ["src/**/*"]
}
Run Code Online (Sandbox Code Playgroud)
我的 swagger Nest-cli 文件:
{
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"entryFile": "create-swagger-app",
"compilerOptions": {
"plugins": [{
"name": "@nestjs/swagger",
"options": {
"controllerFileNameSuffix": ".controller.ts",
"classValidatorShim": true,
"dtoFileNameSuffix": [".response.ts", ".request.ts"]
}
}]
}
}
Run Code Online (Sandbox Code Playgroud)
从包中导出文件的方式是否存在问题?我两种都尝试过nest build
,但yarn build
都没有成功。
我的 Nest cli swagger 构建中是否还需要更多参数?
归档时间: |
|
查看次数: |
1322 次 |
最近记录: |