- unshift(...items: T[]): number {
- if (this.length + items.length > this.size) {
- super.splice(this.size - items.length, (this.length + items.length) - this.size);
+ public splice(start: number, deleteCount?: number, ...items: T[]): CircularArray<T> {
+ let itemsRemoved: T[] = [];
+ if (arguments.length >= 3 && deleteCount !== undefined) {
+ itemsRemoved = super.splice(start, deleteCount, ...items);
+ if (this.length > this.size) {
+ const itemsOverflowing = super.splice(0, this.length - this.size);
+ itemsRemoved = new CircularArray<T>(
+ itemsRemoved.length + itemsOverflowing.length,
+ ...itemsRemoved,
+ ...itemsOverflowing,
+ );
+ }
+ } else if (arguments.length === 2) {
+ itemsRemoved = super.splice(start, deleteCount);
+ } else {
+ itemsRemoved = super.splice(start);