diff options
Diffstat (limited to 'js/util.ts')
-rw-r--r-- | js/util.ts | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/js/util.ts b/js/util.ts index a035d761a..da56465a2 100644 --- a/js/util.ts +++ b/js/util.ts @@ -122,6 +122,19 @@ export function isObject(o: unknown): o is object { return o != null && typeof o === "object"; } +// Returns whether o is iterable. +export function isIterable<T, P extends keyof T, K extends T[P]>( + o: T +): o is T & Iterable<[P, K]> { + // checks for null and undefined + if (o == null) { + return false; + } + return ( + typeof ((o as unknown) as Iterable<[P, K]>)[Symbol.iterator] === "function" + ); +} + // @internal export function requiredArguments( name: string, |