如何克服打字稿的传播操作限制?

时间:2016-06-01 03:25:27

标签: javascript visual-studio typescript ecmascript-6

我试过宣布无济于事。这是我想做的简单事情:

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

显然,typescript不支持这种方式的解构。 我收到了:

  

符号“键”无法正确解析,可能它位于   难以接近的模块

有没有办法可以定义keys()方法并克服这个限制?

3 个答案:

答案 0 :(得分:3)

  

有没有办法可以定义keys()方法并克服这个限制

你可以很容易地宣布这个:

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

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

答案 1 :(得分:2)

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

您的代码段可以为我编译,但您必须设置-t es2015(标记为&#34;实验&#34;)。

答案 2 :(得分:1)

Array(3).keys()返回一个迭代器。要在迭代器上使用spread运算符,使用--downlevelIteration开关使用目标es5。

根据TypeScript documentation

downlevelIteration开关的使用为for..of中的可迭代提供完全支持,在针对ES5或ES3时进行传播和解构。