//// [iterableArrayPattern8.ts] var a: Bar, b: string; [a, ...b] = new FooIterator; class Bar { x } class Foo extends Bar { y } class FooIterator { next() { return { value: new Foo, done: false }; } [Symbol.iterator]() { return this; } } //// [iterableArrayPattern8.js] var a, b; [a, ...b] = new FooIterator; class Bar { } class Foo extends Bar { } class FooIterator { next() { return { value: new Foo, done: false }; } [Symbol.iterator]() { return this; } }