Node.js 如何使用TypeScript定义两个类中的任何一个?
我有: 我想创建一个新类,它可以是这两个类中的任何一个。如果是Node.js 如何使用TypeScript定义两个类中的任何一个?,node.js,typescript,nestjs,Node.js,Typescript,Nestjs,我有: 我想创建一个新类,它可以是这两个类中的任何一个。如果是类型,我会: 键入conva=CreateYouTubeConversationDto | CreateDirectConversationDto 但既然是一门课,我就不能。我该如何实现这一点?您说过您可能想要创建一个类型,因此您需要: class CreateYouTubeConversationDto { @ApiProperty({ required: true }) youtubeId: string; }
类型
,我会:
键入conva=CreateYouTubeConversationDto | CreateDirectConversationDto
但既然是一门课,我就不能。我该如何实现这一点?您说过您可能想要创建一个类型,因此您需要:
class CreateYouTubeConversationDto {
@ApiProperty({ required: true })
youtubeId: string;
}
class CreateDirectConversationDto {
@ApiProperty({ required: true })
imageUrl: string;
@ApiProperty({ required: true })
createdByUserId: string;
}
但是如果你真的想要一个新的班级?我猜你不想继承遗产?您可以这样做:
type Convo =
| typeof CreateYouTubeConversationDto
| typeof CreateDirectConversationDto;
将新对象作为类而不是联合类型有什么好处?您希望如何使用它,从而使
类
具有优势?我正在使用装饰器,因此我认为这就是为什么我需要类
它可能有助于添加您正在使用的框架,因为您正试图满足装饰器的要求。我不认为Typescript中的所有类都有一个通用的解决方案,但在or(anyOf
)等规范中有一个特定的解决方案。将nestjs与OpenAPI一起使用会出现错误吗?如果是,它说什么?因为类的并集不能获得:类只能实现对象类型或对象类型与静态已知成员的交集。
class Foo implements Convo {
// look for errors that you didn't properly
// implement Convo here
}