Итератор - это не особенность TypeScript или ES6, итератор - это поведенческий паттерн проектирования, общий для объектно-ориентированных языков программирования. Фактически, это объект, который имплементирует следующий интерфейс:
Этот интерфейс позволяет получить значение из некоторой коллекции или последовательности, которая принадлежит объекту.
IteratorResult - это просто value + done пара:
1234
interfaceIteratorResult<T>{done:boolean;value:T;}
Представьте, что есть объект Frame, который содержит список элементов Component. С помощью интерфейса Iterator вы можете получить каждый Component из этого объекта Frame, как показано ниже:
Итератор - это не особенность TypeScript, этот код может работать и без имплементации Iterator и IteratorResult интерфейсов. Однако, намного удобнее использовать для этого ES6 интерфейсы для согласованности кода.
Отлично, но можно сделать еще лучше. ES6 определяет итерируемый протокол, который включает [Symbol.iterator]symbol, если Iterable интерфейс имплементирован:
Приведенные выше примеры кода требуют именно использования ES6. Однако, они могут работать и для ES5, если используемый JS движок поддерживает Symbol.iterator. Этого можно добиться использованием ES6 библиотеки с ES5 целевой версией (добавьте es6.d.ts в ваш проект) для успешной компиляции. Скомпилированный код должен работать в node 4+, Google Chrome и некоторых других браузерах.