Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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
Javascript 是否可以将带有装饰器的Typescript类导出为普通类(不带装饰器)?_Javascript_Typescript_Typescript Decorator - Fatal编程技术网

Javascript 是否可以将带有装饰器的Typescript类导出为普通类(不带装饰器)?

Javascript 是否可以将带有装饰器的Typescript类导出为普通类(不带装饰器)?,javascript,typescript,typescript-decorator,Javascript,Typescript,Typescript Decorator,假设我有一门课是这样的: import { Injectable } from '@nestjs/common'; import { IsString } from 'class-validator'; import { prop } from '@typegoose/typegoose'; @Injectable() export class Human { @prop({ unique: true }) @IsString() readonly name: stri

假设我有一门课是这样的:

import { Injectable } from '@nestjs/common';
import { IsString } from 'class-validator';
import { prop } from '@typegoose/typegoose';

@Injectable()
export class Human
{
    @prop({ unique: true })
    @IsString()
    readonly name: string;
}
class Human
{
    readonly name: string;
}
问题是:我是否可以导出此类,以便接收端在不使用decorator的情况下获取此类,如下所示:

import { Injectable } from '@nestjs/common';
import { IsString } from 'class-validator';
import { prop } from '@typegoose/typegoose';

@Injectable()
export class Human
{
    @prop({ unique: true })
    @IsString()
    readonly name: string;
}
class Human
{
    readonly name: string;
}
我想导出这个类(它对decorators有其他依赖项),这样导入它的文件就不需要那些decorator使用的依赖项,比如nestjs、类验证器和typegoose


我试着不写“只读名称:字符串;”不止一次。

所以我想出来了,部分要感谢zett42

您可以在typescript中定义一个
类型
,因此,如果您只是创建一个与类相等的类型,然后导出该类型,那么您将有效地导出该类定义,而不使用修饰符。您也可以使用
接口
,但类型似乎更干净。但是,我不确定类型的行为是否与接口相同,是时候阅读Typescript文档了

类型:

export type THuman = Human;
带接口:

export interface IHuman extends Human {}

如果没有某种预处理,那是不可能的。您可以导出从类派生的类型或接口,但不能使用它们来实例化对象。为此,您需要一个构造函数,但是您还必须再次编写属性。@zett42当我说我只想编写一次属性时,我的意思是定义类/接口。当我创建新对象时不会。当我创建Interface类型的新对象时,我希望该接口在我创建新对象时强制我实现该接口。那很好。我可以接受它,也可以接受为类添加构造函数。这是普通的面向对象的东西。话虽如此,你能给我举一个“导出一个从类派生的类型或接口”的例子吗?这个例子会留下decorator依赖项吗?@zett42对不起,我问了一个例子,因为我已经试过了,但它不起作用,但我明白了为什么我可以将它导出为一个没有依赖项的类型。哎呀!谢谢你的评论!如果你不介意的话,我会用一个例子来回答这个问题。请随意使用它作为答案。
export type
正在为类创建一个类型别名,这意味着同一个类包括装饰AFAIK,您不会删除它们<代码>导出接口I扩展类应该是正确答案。AFAIK接口扩展仅复制对象原型上的公共成员定义。