On Jun 11, 2013, at 10:22 AM, Andrea Giammarchi wrote: > I believe Iterator should be an interface and not a class so I could extend > Array or ArrayLike implementing Iterator, when/if necessary, in order to have > a for/of compatible class. > > We don't have interfaces ... I know, we could have mixins though, compatible > with @@things too.
Even if we had an Iterator abstract class, it would simply be there as an connivence for Iterator implementors. I would never specify for-of as doing a instanceof-like check on Iterator. Duck-typing is what is need in this situation. While we don't have interfaces as a linguistic form, we use implicit interfaces all the time. Any duck-typing check, whether explicit or implicit (via an unguarded method call) is conceptually checking for an implicit interface. Allen > > My 2 cents > > > On Tue, Jun 11, 2013 at 9:41 AM, Brandon Benvie <[email protected]> wrote: > On 6/11/2013 5:50 AM, Tab Atkins Jr. wrote: > On Tue, Jun 11, 2013 at 2:08 AM, Axel Rauschmayer <[email protected]> wrote: > On the other hand, turning every iterator into an iterable puts the burden > on people implementing iterators: they have to implement the iterable > interface. > That's... not really a burden. It's literally just adding an > @@iterator method whose body is "return this;". It's the right place > to put the burden, too - manual iterator authors are much, much fewer > than for-of users. > > It may be worth noting that, while it hasn't made it into the ES6 spec > (yet?), the iterators strawman [1] (and modules_standard strawman [2]) had an > `Iterator` class that all the builtin iterators (Map, Set, Generator, etc.) > inherited from who's prototype had @@iterator built in. So usually the only > burden for iterator authors was to create a class that inherited from > Iterator. > > import { Iterator } from '@iter'; > class MyIterator extends Iterator { /*...*/ } > > > [1] http://wiki.ecmascript.org/doku.php?id=harmony:iterators > [2] http://wiki.ecmascript.org/doku.php?id=harmony:modules_standard > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

