2016-06-01 27 views
1

我試過宣佈無濟於事。這是我想要做的簡單事情:如何克服打字稿的傳播限制?

this.scoreStack = [...Array(3).keys()]; 

顯然,typescript不支持這種解構方法。 我收到:

符號「鑰匙」不能得到妥善解決,很可能它位於一個 人跡罕至模塊

在有沒有一種方法,我可以定義鍵()方法,並得到了這個限制?

回答

3

有沒有一種方法,我可以定義鍵()方法,並克服這一侷限性

你可以聲明這很容易:

declare global { 
    interface Array<T> { 
     keys():string[]; 
    } 
} 

const x = [...Array(3).keys()]; 
+0

這工作完美:D –

+0

嗯,它在編譯檢查工作,但不是在編譯後。爲了它的工作,我們需要導出到ES2015(ES6),然後使用Babel。 –

2

Array#keys是ES6中的一種新方法。

您的代碼片段爲我編譯好,但您必須設置-t es2015(標記爲「實驗」)。

+0

難道這不直接輸出到ES2015?我想留在ES5 –

1

Array(3).keys()返回iterator.To在迭代器和目標es5上使用擴展運算符使用--downlevelIteration開關。

按打字稿documentation

使用downlevelIteration開關提供iterables全力支持for..of,瞄準ES5或ES3當傳播和解構。