Spaces:
Running
Running
; | |
Object.defineProperty(exports, '__esModule', { | |
value: true, | |
}); | |
exports.isIterableObject = isIterableObject; | |
/** | |
* 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 | |
* ``` | |
*/ | |
function isIterableObject(maybeIterable) { | |
return ( | |
typeof maybeIterable === 'object' && | |
typeof (maybeIterable === null || maybeIterable === void 0 | |
? void 0 | |
: maybeIterable[Symbol.iterator]) === 'function' | |
); | |
} | |