You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
819 B
25 lines
819 B
/** |
|
* 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' |
|
); |
|
}
|
|
|