Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用TypeScript定义两个类中的任何一个?_Node.js_Typescript_Nestjs - Fatal编程技术网

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
}