Iterators

Iterator itself is not a TypeScript or ES6 feature, Iterator is a
Behavioral Design Pattern common for Object oriented programming languages.
It is, generally, an object which implements the following interface:

This interface allows to retrieve a value from some collection or sequence
which belongs to the object.

The IteratorResult is simply a value+done pair:

interface IteratorResult<T> {
done: boolean;
value: T;
}

Imagine that there's an object of some frame, which includes the list of
components of which this frame consists. With Iterator interface it is possible
to retrieve components from this frame object like below:

Again. Iterator itself is not a TypeScript feature, this code could work without
implementing Iterator and IteratorResult interfaces explicitly.
However it is very helpful to use these common
ES6 interfaces for code consistency.

Ok, Nice, but could be more helpful. ES6 defines the iterable protocol
which includes [Symbol.iterator] symbol if Iterable interface implemented:

Building code with iterators for ES5 target

Code examples above require ES6 target, however it could work
with ES5 target as well if target JS engine supports Symbol.iterator.
This can be achieved by using ES6 lib with ES5 target
(add es6.d.ts to your project) to make it compile.
Compiled code should work in node 4+, Google Chrome and in some other browsers.