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