2016-09-26 73 views
0

我是新來的「ES7」裝飾者(我真的認爲裝飾者是由Babel babel-plugin-transform-decorators-legacy插件啓用的,最初基於ES7裝飾者建議),並且我對他們的工作方式有點麻煩。我知道一個方法修飾器修改了這個方法,但我不清楚在這個過程中會發生什麼「副作用」。具體來說,我想知道一個裝飾器是否可以生成一個export,即。我可以使一個裝飾這樣的:Babel Decorators:是否可以創建一個「@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聲明?

+0

應該在模塊的頂部聲明導出,以便它們可以靜態分析。所以,即使你可以(它可能需要一些hacky的插件,例如Babel),你真的不應該這樣做。 – sdgluck

+1

爲什麼你想要導出一個方法呢? – Bergi

+0

模塊可能會將某些東西看作是靜態函數,但是(在幕後),將該函數作爲(單例)對象的方法實現可能更有意義。 – machineghost

回答

2

不,不能動態創建導出聲明。充其量,你可以動態地創建一個包含它們的模塊文件。

相關問題