From a07d5f457609368d3ceaac8e1b9c12db1b3d5d8d Mon Sep 17 00:00:00 2001 From: Brian Zengel Date: Thu, 31 Oct 2013 10:28:06 -0400 Subject: [PATCH 1/2] Added array methods, remove, destroy, etc.; Converted the define property options to a separate interface --- knockout.es5/knockout.es5-tests.ts | 10 +++++++++- knockout.es5/knockout.es5.d.ts | 17 ++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/knockout.es5/knockout.es5-tests.ts b/knockout.es5/knockout.es5-tests.ts index f8faf95296..91126554d5 100644 --- a/knockout.es5/knockout.es5-tests.ts +++ b/knockout.es5/knockout.es5-tests.ts @@ -1,4 +1,4 @@ -/// +/// var empty = {}, obj = { a: 'string', b: 123, c: true, d: empty }, @@ -73,5 +73,13 @@ anOrder.lines.push(someOrderLine); anOrder.lines.push(someOrderLine); anOrder.lines.shift(); +anOrder.lines.remove(someOrderLine); +anOrder.lines.removeAll([someOrderLine]); +anOrder.lines.removeAll(); + +anOrder.lines.destroy(someOrderLine); +anOrder.lines.destroyAll([someOrderLine]); +anOrder.lines.destroyAll(); + console.log(someOrderLine.subtotal == someOrderLine.getSubtotal()); // true console.log(anOrder.lines.length); // 1 diff --git a/knockout.es5/knockout.es5.d.ts b/knockout.es5/knockout.es5.d.ts index c546e1bebb..868655545e 100644 --- a/knockout.es5/knockout.es5.d.ts +++ b/knockout.es5/knockout.es5.d.ts @@ -8,7 +8,22 @@ interface KnockoutStatic { track(obj: any, propertyNames?: Array): any; defineProperty(obj: any, propertyName: string, evaluator: Function): any; - defineProperty(obj: any, propertyName: string, options: { get: () => any; set?: (value: any) => void; }): any; + defineProperty(obj: any, propertyName: string, options: KnockoutDefinePropertyOptions): any; getObservable(obj: any, propertyName: string): KnockoutObservable; valueHasMutated(obj: any, propertyName: string): void; +} + +interface KnockoutDefinePropertyOptions { + get(): any; + set?(value: any): void; +} + +interface Array { + remove(item): T[]; + removeAll(items: T[]): T[]; + removeAll(): T[]; + + destroy(item: T): void; + destroyAll(items: T[]): void; + destroyAll(): void; } \ No newline at end of file From 8474bb3ded113b070c1e9e3f1474d47ae46c4521 Mon Sep 17 00:00:00 2001 From: Brian Zengel Date: Thu, 31 Oct 2013 10:36:41 -0400 Subject: [PATCH 2/2] Moved array tests to bottom of file --- knockout.es5/knockout.es5-tests.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/knockout.es5/knockout.es5-tests.ts b/knockout.es5/knockout.es5-tests.ts index 91126554d5..c51b9bc9d2 100644 --- a/knockout.es5/knockout.es5-tests.ts +++ b/knockout.es5/knockout.es5-tests.ts @@ -73,13 +73,14 @@ anOrder.lines.push(someOrderLine); anOrder.lines.push(someOrderLine); anOrder.lines.shift(); +console.log(someOrderLine.subtotal == someOrderLine.getSubtotal()); // true +console.log(anOrder.lines.length); // 1 + +//Array methods anOrder.lines.remove(someOrderLine); anOrder.lines.removeAll([someOrderLine]); anOrder.lines.removeAll(); anOrder.lines.destroy(someOrderLine); anOrder.lines.destroyAll([someOrderLine]); -anOrder.lines.destroyAll(); - -console.log(someOrderLine.subtotal == someOrderLine.getSubtotal()); // true -console.log(anOrder.lines.length); // 1 +anOrder.lines.destroyAll(); \ No newline at end of file