26 lines
		
	
	
		
			819 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			819 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * Returns true if the provided object is an Object (i.e. not a string literal)
 | |
|  * and implements the Iterator protocol.
 | |
|  *
 | |
|  * This may be used in place of [Array.isArray()][isArray] to determine if
 | |
|  * an object should be iterated-over e.g. Array, Map, Set, Int8Array,
 | |
|  * TypedArray, etc. but excludes string literals.
 | |
|  *
 | |
|  * @example
 | |
|  * ```ts
 | |
|  * isIterableObject([ 1, 2, 3 ]) // true
 | |
|  * isIterableObject(new Map()) // true
 | |
|  * isIterableObject('ABC') // false
 | |
|  * isIterableObject({ key: 'value' }) // false
 | |
|  * isIterableObject({ length: 1, 0: 'Alpha' }) // false
 | |
|  * ```
 | |
|  */
 | |
| export function isIterableObject(maybeIterable) {
 | |
|   return (
 | |
|     typeof maybeIterable === 'object' &&
 | |
|     typeof (maybeIterable === null || maybeIterable === void 0
 | |
|       ? void 0
 | |
|       : maybeIterable[Symbol.iterator]) === 'function'
 | |
|   );
 | |
| }
 |