2016-12-26 39 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做到了!

相關問題