Improved fieldsArray

This commit is contained in:
Alexander Cerutti
2021-10-08 22:33:42 +02:00
parent bbecdeed79
commit 8a3a8f7473

View File

@@ -10,10 +10,10 @@ const fieldsDebug = debug("passkit:fields");
const poolSymbol = Symbol("pool"); const poolSymbol = Symbol("pool");
export default class FieldsArray extends Array { export default class FieldsArray extends Array<Schemas.Field> {
private [poolSymbol]: Set<string>; private [poolSymbol]: Set<string>;
constructor(pool: Set<string>, ...args: any[]) { constructor(pool: Set<string>, ...args: Schemas.Field[]) {
super(...args); super(...args);
this[poolSymbol] = pool; this[poolSymbol] = pool;
} }
@@ -46,7 +46,7 @@ export default class FieldsArray extends Array {
[], [],
); );
return Array.prototype.push.call(this, ...validFields); return super.push(...validFields);
} }
/** /**
@@ -55,7 +55,7 @@ export default class FieldsArray extends Array {
*/ */
pop(): Schemas.Field { pop(): Schemas.Field {
const element: Schemas.Field = Array.prototype.pop.call(this); const element: Schemas.Field = super.pop();
this[poolSymbol].delete(element.key); this[poolSymbol].delete(element.key);
return element; return element;
} }
@@ -73,7 +73,7 @@ export default class FieldsArray extends Array {
const removeList = this.slice(start, deleteCount + start); const removeList = this.slice(start, deleteCount + start);
removeList.forEach((item) => this[poolSymbol].delete(item.key)); removeList.forEach((item) => this[poolSymbol].delete(item.key));
return Array.prototype.splice.call(this, start, deleteCount, items); return super.splice(start, deleteCount, ...items);
} }
get length(): number { get length(): number {