Доки по разработке
This project is maintained by teniryte
Принципы
[Symbol.iterator], возвращающий объект с next, чтобы сделать структуру итерируемой.next должен возвращать объект { value, done }; когда done: true, итерация завершается.for...of, оператор распространения и другие конструкции, ожидающие итерируемый объект.Пример
function range(start: number, end: number, step = 1) {
return {
[Symbol.iterator]() {
return this;
},
next() {
if (start < end) {
start = start + step;
return { value: start, done: false };
}
return { done: true, value: end };
},
};
}
for (const n of range(0, 10, 2)) {
console.log(n);
}
Практика
start.this из [Symbol.iterator], если сам объект является итератором; иначе создайте отдельный итератор.