Мне нужна помощь в различении итераторов и генераторов в TypeScript.
Ссылка на ресурс: https://courses.edx.org/courses/course-v1:Microsoft+DEV273x+1T2019/courseware/d2b1e6e94b0b46528fbff396a486c045/6a959ce8b5cf40c38d3f4f4e0b737603/1?activate_block_id=block-v1%3AMicrosoft%2BDEV273x%2B1T2019%2Btype%40vertical%2Bblock%40994a937b62b746eaadfbf20382b4615b
"Итераторы - это, в основном, объекты, которые могут содержать более одного элемента. Итераторы - это наборы объектовили переменные или элементы, для которых можно выполнить итерацию для какой-либо обработки каждого элемента в коллекции. Массивы являются примером итераторов. В TypeScript объект считается итеративным, если он имеет реализацию для свойства Symbol.iterator. Кодпример:
let someArray = [1, "string", false];
for (let entry of someArray) {
console.log(entry); // 1, "string", false
}
let list = [4, 5, 6];
for (let i in list) {
console.log(i); // "0", "1", "2", the keys of the array are the indices of its items
}
for (let i of list) {
console.log(i); // "4", "5", "6"
}
Генераторы, нацеленные на ES5 и ES3 При нацеливании на ES5 или ES3 итераторы допускаются только для значений типа Array. Использование циклов for..of для значений, не являющихся массивами, является ошибкой,даже если эти значения, отличные от Array, реализуют свойство Symbol.iterator.
Компилятор сгенерирует простой цикл for для цикла for..of, например:
let numbers = [1, 2, 3];
for (let num of numbers) {
console.log(num);
}
будетсгенерировано как:
var numbers = [1, 2, 3];
for (var _i = 0; _i < numbers.length; _i++) {
var num = numbers[_i];
console.log(num);
}
Таргетинг ECMAScript 2015 и выше При нацеливании на ECMAScipt 2015-совместимый движок, компiler будет генерировать циклы for..of для нацеливания встроенной реализации итератора в движке."
Причина, по которой я был сбит с толку: итератор и генератор используют массив и цикл в качестве примера. Также кажется, что у них есть определенные отношения в TypeScript.
Может кто-нибудь помочь мне определить различиямежду итератором и генератором в TypeScript?