typescript - De ce bucla for arr.entries() nu funcționează în TS?


De ce bucla for arr.entries() nu funcționează în TS? asta funcționează perfect în consola Chrome

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

dar nu se oprește la breakpoint în TypeScript 2.1.4, de asemenea mă întreb de ce primesc această eroare în ts: Error:(67, 35) TS2495: Tipul 'IterableIterator<[number, string]>' nu este un tip de array sau un tip de string. Pot seta ca :any dar evident că acesta nu este ideea

salutări

Sean

Răspuns #1

Probabil vizați es3 sau es5, și așa cum este menționat în documentație:

Când se vizează ES5 sau ES3, iteratoarele sunt permise doar pentru valorile de tip Array. Este o eroare să se folosească buclele for..of pe valori non-Array, chiar dacă aceste valori non-Array implementează proprietatea Symbol.iterator.

Dacă vizezi es6, ar trebui să compileze fără erori.

Răspunsul #2

Pe baza răspunsului lui Nitzan Tomer, acest cod ar funcționa cu es5:

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

Bucură-te.