import {IStack} from '@testring-dev/types'; export class Stack implements IStack { private array: Array; constructor(initialArray?: Array) { if (Array.isArray(initialArray)) { this.array = [...initialArray]; } else { this.array = []; } } public push(element: T): void { this.array.push(element); } public pop(): T | void { return this.array.pop(); } public clean(): void { this.array.length = 0; } public getLastElement(offset = 0): T | null { const elementIndex = this.array.length - 1 - offset; if (elementIndex < 0) { return null; } return this.array[elementIndex] ?? null; } public get length(): number { return this.array.length; } [Symbol.iterator]() { return this.array[Symbol.iterator](); } }