33 lines
		
	
	
		
			973 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			973 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | /** | ||
|  |  * @license | ||
|  |  * Copyright Google Inc. All Rights Reserved. | ||
|  |  * | ||
|  |  * Use of this source code is governed by an MIT-style license that can be | ||
|  |  * found in the LICENSE file at https://angular.io/license
 | ||
|  |  */ | ||
|  | 
 | ||
|  | import {global as _global} from './global'; | ||
|  | 
 | ||
|  | // When Symbol.iterator doesn't exist, retrieves the key used in es6-shim
 | ||
|  | declare const Symbol: any; | ||
|  | let _symbolIterator: any = null; | ||
|  | export function getSymbolIterator(): string|symbol { | ||
|  |   if (!_symbolIterator) { | ||
|  |     const Symbol = _global['Symbol']; | ||
|  |     if (Symbol && Symbol.iterator) { | ||
|  |       _symbolIterator = Symbol.iterator; | ||
|  |     } else { | ||
|  |       // es6-shim specific logic
 | ||
|  |       const keys = Object.getOwnPropertyNames(Map.prototype); | ||
|  |       for (let i = 0; i < keys.length; ++i) { | ||
|  |         const key = keys[i]; | ||
|  |         if (key !== 'entries' && key !== 'size' && | ||
|  |             (Map as any).prototype[key] === Map.prototype['entries']) { | ||
|  |           _symbolIterator = key; | ||
|  |         } | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  |   return _symbolIterator; | ||
|  | } |