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
语句?
不,不能动态创建导出声明。充其量,您可以动态创建一个包含它们的模块文件。
我是 "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
语句?
不,不能动态创建导出声明。充其量,您可以动态创建一个包含它们的模块文件。