dangerousForOf
This adds a dangerousForOf
transform which converts a for-of
statement into a simple array iterator, per #19 (closed):
// in
for ( let member of [ 'a', 'b', 'c' ] ) {
console.log( member );
}
// out
for ( var i = 0, list = [ 'a', 'b', 'c' ]; i < list.length; i += 1 ) {
var member = list[i];
console.log( member );
}
It's dangerous because it only works with things that have a length
property, with members that can be accessed using array notation (arrays, strings, nodelists, etc). It does not work with all collections (Map
, Set
etc), or generators, because it doesn't support the iterator protocol (doing so involves bloating out the generated code in a way that would surprise most people innocently using for-of
– perhaps we should one day add an analForOf
transform for the people who need it). In this regard, it produces very similar output to TypeScript, with the exception that TypeScript doesn't support nodelists.