[英]Create dynamic javascript classes, to extend dto class for swagger
我正在尝试为 nestJS 中的 swagger dto 创建自己的“映射类型” 。
在官方文档中有很多“映射类型”。 但是,我需要添加 class 的所有字段,并仅将其中一些字段设为可选。
为此,我做了这样的事情:
export default class CreateUserDto extends IntersectionType(
OmitType(UserDto, ['nickname'] as const),
PartialType(PickType(UserDto, ['nickname'] as const)),
) {}
这完美地工作。 添加了所有字段,但只有昵称是可选的。
但是,重复使用不是很实用。 所以我想创建一个自定义 class以便能够扩展它并获得相同的结果。
我尝试以下方法:
const OptionalType = (dto, optional) => {
return class NewClass extends IntersectionType(
OmitType(dto, optional as const),
PartialType(PickType(dto, optional as const)),
) {};
};
export default class CreateUserDto extends OptionalType(UserDto, [
'nickname',
]) {}
并直接返回“IntersectionType”而不创建 class。
但这没有用。
当我尝试使用“可选”变量时,我收到错误消息... “‘const’断言只能应用于对枚举成员或字符串、数字、boolean、数组或 object 文字的引用。”
你能指导我如何实现我想要的吗? 请
您不需要将as const
添加到OptionalType
内的optional
选项中,您只需要在调用OptionalType
时将其添加到。
例如
const OptionalType = (dto, optional) => {
return class NewClass extends IntersectionType(
OmitType(dto, optional),
PartialType(PickType(dto, optional)),
) {};
};
export default class CreateUserDto extends OptionalType(UserDto, [
'nickname',
] as const) {}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.