From 6f74397f8da0653464bc19c5ae66e6cb93a0f093 Mon Sep 17 00:00:00 2001 From: Revone Date: Sun, 19 Nov 2023 09:04:48 +0800 Subject: [PATCH] fix: Iterator supports function length or function size --- src/data-structures/queue/deque.ts | 8 ++++---- src/types/helpers.ts | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/data-structures/queue/deque.ts b/src/data-structures/queue/deque.ts index a730bcb..24eacaa 100644 --- a/src/data-structures/queue/deque.ts +++ b/src/data-structures/queue/deque.ts @@ -119,11 +119,11 @@ export class Deque { */ constructor(elements: IterableWithSizeOrLength = [], bucketSize = (1 << 12)) { - let _size; + let _size: number; if ('length' in elements) { - _size = elements.length; + if (elements.length instanceof Function) _size = elements.length(); else _size = elements.length; } else { - _size = elements.size; + if (elements.size instanceof Function) _size = elements.size();else _size = elements.size; } this._bucketSize = bucketSize; @@ -991,7 +991,7 @@ export class Deque { * Time Complexity: O(1) * Space Complexity: O(1) */ - + /** * Time Complexity: O(1) * Space Complexity: O(1) diff --git a/src/types/helpers.ts b/src/types/helpers.ts index bb86b6c..39f75f1 100644 --- a/src/types/helpers.ts +++ b/src/types/helpers.ts @@ -16,11 +16,11 @@ export const enum IterateDirection { } export interface IterableWithSize extends Iterable { - size: number; + size: number | ((...args: any[]) => number); } export interface IterableWithLength extends Iterable { - length: number; + length: number | ((...args: any[]) => number); } export type IterableWithSizeOrLength = IterableWithSize | IterableWithLength