File tree Expand file tree Collapse file tree 2 files changed +19
-10
lines changed Expand file tree Collapse file tree 2 files changed +19
-10
lines changed Original file line number Diff line number Diff line change @@ -93,9 +93,9 @@ export class ListWrapper {
9393 static map ( array , fn ) {
9494 return array . map ( fn ) ;
9595 }
96- static forEach ( array , fn ) {
97- for ( var p of array ) {
98- fn ( p ) ;
96+ static forEach ( array : List , fn : Function ) {
97+ for ( var i = 0 ; i < array . length ; i ++ ) {
98+ fn ( array [ i ] ) ;
9999 }
100100 }
101101 static push ( array , el ) {
@@ -198,8 +198,16 @@ export function isListLikeIterable(obj):boolean {
198198}
199199
200200export function iterateListLike ( obj , fn :Function ) {
201- for ( var item of obj ) {
202- fn ( item ) ;
201+ if ( ListWrapper . isList ( obj ) ) {
202+ for ( var i = 0 ; i < obj . length ; i ++ ) {
203+ fn ( obj [ i ] ) ;
204+ }
205+ } else {
206+ var iterator = obj [ Symbol . iterator ] ( ) ;
207+ var item ;
208+ while ( ! ( ( item = iterator . next ( ) ) . done ) ) {
209+ fn ( item . value ) ;
210+ }
203211 }
204212}
205213
Original file line number Diff line number Diff line change @@ -259,8 +259,8 @@ var number = type.number = define('number', function(value) {
259259function arrayOf ( ...types ) {
260260 return assert . define ( 'array of ' + types . map ( prettyPrint ) . join ( '/' ) , function ( value ) {
261261 if ( assert ( value ) . is ( Array ) ) {
262- for ( var item of value ) {
263- assert ( item ) . is ( ...types ) ;
262+ for ( var i = 0 ; i < value . length ; i ++ ) {
263+ assert ( value [ i ] ) . is ( ...types ) ;
264264 }
265265 }
266266 } ) ;
@@ -270,7 +270,8 @@ function structure(definition) {
270270 var properties = Object . keys ( definition ) ;
271271 return assert . define ( 'object with properties ' + properties . join ( ', ' ) , function ( value ) {
272272 if ( assert ( value ) . is ( Object ) ) {
273- for ( var property of properties ) {
273+ for ( var i = 0 ; i < properties . length ; i ++ ) {
274+ var property = properties [ i ] ;
274275 assert ( value [ property ] ) . is ( definition [ property ] ) ;
275276 }
276277 }
@@ -318,8 +319,8 @@ function assert(value) {
318319 // var errors = []
319320 var allErrors = [ ] ;
320321 var errors ;
321-
322- for ( var type of types ) {
322+ for ( var i = 0 ; i < types . length ; i ++ ) {
323+ var type = types [ i ] ;
323324 errors = [ ] ;
324325
325326 if ( isType ( value , type , errors ) ) {
You can’t perform that action at this time.
0 commit comments