Babel 装饰器:是否可以创建一个“@export”装饰器?

Babel Decorators: Is it Possible to Create an "@export" Decorator?

我是 "ES7" 装饰器的新手(我的意思是 Babel babel-plugin-transform-decorators-legacy 插件启用的装饰器,该插件最初基于 ES7 装饰器提案),我是他们的工作方式有点麻烦。我知道方法装饰器会修改方法,但我不清楚 "side effects" 在此过程中会发生什么。具体来说,我想知道装饰器是否可以生成 export,即。我可以做这样的装饰器吗:

class Foo {
    @export
    bar() { doSomething(); }
}

生成:

export const bar = Foo.prototype.bar;
// or
export const bar = new (Foo()).bar;

或者:

class Foo {
    @export
    static bar() { doSomething(); }
}

至:

export const bar = Foo.bar;

简而言之,装饰器是否可以创建 export 语句?

不,不能动态创建导出声明。充其量,您可以动态创建一个包含它们的模块文件。