2016-12-26 40 views
0

为什么arr.entries()for循环在TS中不起作用? 这部作品在铬控制台为什么arr.entries()for循环在TS中不起作用?

var arr = ['a', 'b', 'c']; 
var e = arr.entries(); 
for (let [index, elem] of e) { 
     debugger; 
     console.log(`index = ${index}, elem = ${elem}`); 
} 

得很好,但在打字稿2.1.4 也不知没有断点,为什么我得到这个错误在TS: Error:(67, 35) TS2495:Type 'IterableIterator<[number, string]>' is not an array type or a string type. 我可以设置为:any但obviosuly这不是想法

问候

肖恩

回答

1

你可能瞄准es3es5,并且当它states in the docs

当靶向ES5或ES3,迭代器只允许上 阵列类型的值。即使这些非数组值实现了Symbol.iterator属性,在非数组值上使用for..of循环也是错误的,即 。

如果你的目标是es6它应该编译没有错误。

+0

我编译你的准确的代码与定位'es6',它很好。你是否编译了你发布的相同代码或其他东西? –

0

大厦Nitzan托默的答案,这个代码将与es5工作:

var arr = ['a', 'b', 'c']; 
for (let index = 0; index < arr.length; index++) { 
    let elem = arr[index]; 
    console.log(`index = ${index}, elem = ${elem}`); 
} 

享受。

+0

是的TX,雅我知道,但试图避免额外的任务,否则我只会使用_.forEach(... – born2net

+1

@ born2net有一个原生的'forEach'方法为js数组,不需要使用'_。 forEach'在任何情况下。 –

+0

同意,是的,TX一如既往...(只是这么习惯_... :) – born2net

0

tx的帮助,目标es6做到了!

相关问题