summaryrefslogtreecommitdiff
path: root/js/util.ts
diff options
context:
space:
mode:
Diffstat (limited to 'js/util.ts')
-rw-r--r--js/util.ts13
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,