Refactored the properties of KnockoutObservable<T> into a seperate interface. This way KnockoutObservableArray doesn't extend KnockoutObservable anymore, making it possible to override methods according to the knockoutjs syntax (including Array Change subscription support).

This commit is contained in:
EWOUT-QMINO\Ewout
2014-10-08 10:29:07 +02:00
parent 67c09d58fc
commit 4b4d78850f
+22 -10
View File
@@ -53,7 +53,7 @@ interface KnockoutSubscription {
}
interface KnockoutSubscribable<T> extends KnockoutSubscribableFunctions<T> {
subscribe(callback: (object: any) => void, target?: any, event?: string): KnockoutSubscription;
subscribe(callback: (param : any) => void, target?: any, event?: string): KnockoutSubscription;
subscribe<TEvent>(callback: (newValue: TEvent) => void, target: any, event: string): KnockoutSubscription;
extend(requestedExtenders: { [key: string]: any; }): KnockoutSubscribable<T>;
getSubscriptionsCount(): number;
@@ -83,7 +83,25 @@ interface KnockoutObservableArrayStatic {
<T>(value?: T[]): KnockoutObservableArray<T>;
}
interface KnockoutObservableArray<T> extends KnockoutObservable<T[]>, KnockoutObservableArrayFunctions<T> {
interface KnockoutObservableProperties<T>{
(): T;
(value: T): void;
peek(): T;
valueHasMutated?:{(): void;};
valueWillMutate?:{(): void;};
}
interface KnockoutObservableArray<T> extends KnockoutSubscribable<T[]>, KnockoutObservableProperties<T[]>,KnockoutObservableArrayFunctions<T> {
subscribe(callback: (param : T[]) => void, target?: any, event?: string): KnockoutSubscription;
subscribe(callback: (param : T[]) => void, target: any, event: string): KnockoutSubscription;
subscribe(callback: (param : T[]) => void, target: any, event: 'change'): KnockoutSubscription;
subscribe(callback: (param : T[]) => void, target: any, event: 'beforeChange'): KnockoutSubscription;
subscribe(callback: (changes : KnockoutArrayChange<T>[]) => void, target: any, event: string): KnockoutSubscription;
subscribe(callback: (changes : KnockoutArrayChange<T>[]) => void, target: any, event: 'arrayChange'): KnockoutSubscription;
extend(requestedExtenders: { [key: string]: any; }): KnockoutObservableArray<T>;
}
@@ -93,14 +111,8 @@ interface KnockoutObservableStatic {
<T>(value?: T): KnockoutObservable<T>;
}
interface KnockoutObservable<T> extends KnockoutSubscribable<T>, KnockoutObservableFunctions<T> {
(): T;
(value: T): void;
peek(): T;
valueHasMutated?:{(): void;};
valueWillMutate?:{(): void;};
interface KnockoutObservable<T> extends KnockoutSubscribable<T>, KnockoutObservableProperties<T>, KnockoutObservableFunctions<T> {
subscribe(callback: (newValue : T) => void, target?: any, event?: string): KnockoutSubscription;
extend(requestedExtenders: { [key: string]: any; }): KnockoutObservable<T>;
}