mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-07-02 00:00:04 +00:00
Knockout - proper function inheritance
Main change was that you can define fn against a one of the observable types (subscribable, observable, observableArray, computed) and have it available in the appropriate types. Also made sure the knockoutjs test file is actually passing.
This commit is contained in:
482
Definitions/knockout-2.2.d.ts
vendored
482
Definitions/knockout-2.2.d.ts
vendored
@@ -1,216 +1,268 @@
|
||||
// Type definitions for Knockout 2.2
|
||||
// Project: http://knockoutjs.com
|
||||
// Definitions by: Boris Yankov <https://github.com/borisyankov/>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
|
||||
interface KnockoutSubscription {
|
||||
dispose(): void;
|
||||
}
|
||||
|
||||
interface KnockoutObservableArrayFunctions {
|
||||
// General Array functions
|
||||
indexOf(searchElement, fromIndex?: number): number;
|
||||
slice(start: number, end?: number): any[];
|
||||
splice(start: number): any[];
|
||||
splice(start: number, deleteCount: number, ...items: any[]): any[];
|
||||
pop();
|
||||
push(...items: any[]): void;
|
||||
shift();
|
||||
unshift(...items: any[]): number;
|
||||
reverse(): any[];
|
||||
sort(): void;
|
||||
sort(compareFunction): void;
|
||||
|
||||
subscribe(callback: (newValue: any[]) => void ): KnockoutSubscription;
|
||||
|
||||
// Ko specific
|
||||
remove(item): any[];
|
||||
removeAll(items: any[]): any[];
|
||||
removeAll(): any[];
|
||||
|
||||
destroy(item): void;
|
||||
destroyAll(items: any[]): void;
|
||||
destroyAll(): void;
|
||||
}
|
||||
|
||||
interface KnockoutObservableArray extends KnockoutObservableArrayFunctions {
|
||||
|
||||
fn: KnockoutObservableArrayFunctions;
|
||||
|
||||
(): KnockoutObservableArray;
|
||||
(value: any[]): KnockoutObservableArray;
|
||||
}
|
||||
|
||||
interface KnockoutObservableBase {
|
||||
|
||||
fn;
|
||||
|
||||
extend(source);
|
||||
subscribe(func: Function): KnockoutSubscription;
|
||||
}
|
||||
|
||||
interface KnockoutObservableAny extends KnockoutObservableBase {
|
||||
|
||||
(): any;
|
||||
(value): void;
|
||||
}
|
||||
|
||||
interface KnockoutObservableString extends KnockoutObservableBase {
|
||||
(): string;
|
||||
(value: string): void;
|
||||
}
|
||||
|
||||
|
||||
interface KnockoutObservableNumber extends KnockoutObservableBase {
|
||||
(): number;
|
||||
(value: number): void;
|
||||
}
|
||||
|
||||
interface KnockoutObservableBool extends KnockoutObservableBase {
|
||||
(): bool;
|
||||
(value: bool): void;
|
||||
}
|
||||
|
||||
interface KnockoutObservableDate extends KnockoutObservableBase {
|
||||
(): Date;
|
||||
(value: Date): void;
|
||||
}
|
||||
|
||||
interface KnockoutComputed extends KnockoutObservableBase {
|
||||
(): KnockoutComputed;
|
||||
(func: Function, context?: any): KnockoutComputed;
|
||||
(def: KnockoutComputedDefine): KnockoutComputed;
|
||||
(options?: any): KnockoutComputed;
|
||||
|
||||
subscribe(callback: (newValue: number) => void ): KnockoutSubscription;
|
||||
getDependenciesCount(): number;
|
||||
hasWriteFunction(): bool;
|
||||
}
|
||||
|
||||
interface KnockoutComputedDefine {
|
||||
read(): any;
|
||||
write(any);
|
||||
}
|
||||
|
||||
interface KnockoutBindingContext {
|
||||
$parent: any;
|
||||
$parents: any[];
|
||||
$root: any;
|
||||
$data: any;
|
||||
$index?: number;
|
||||
$parentContext?: KnockoutBindingContext;
|
||||
}
|
||||
|
||||
interface KnockoutBindingHandler {
|
||||
// TODO: Work out how to define bindingHandlers when not using all the args
|
||||
// adding element?: any, etc doesnt work...
|
||||
init(element: any, valueAccessor: () => any, allBindingsAccessor: () => any, viewModel: any, bindingContext: KnockoutBindingContext): void;
|
||||
update(element: any, valueAccessor: () => any, allBindingsAccessor: () => any, viewModel: any, bindingContext: KnockoutBindingContext): void;
|
||||
//init: any;
|
||||
//update: any;
|
||||
options?: any;
|
||||
}
|
||||
|
||||
interface KnockoutBindingHandlers {
|
||||
value: KnockoutBindingHandler;
|
||||
}
|
||||
|
||||
interface KnockoutMemoization {
|
||||
memoize(callback);
|
||||
unmemoize(memoId, callbackParams);
|
||||
unmemoizeDomNodeAndDescendants(domNode, extraCallbackParamsArray);
|
||||
parseMemoText(memoText);
|
||||
}
|
||||
|
||||
interface KnockoutVirtualElements {
|
||||
allowedBindings;
|
||||
emptyNode;
|
||||
firstChild;
|
||||
insertAfter;
|
||||
nextSibling;
|
||||
prepend;
|
||||
setDomNodeChildren;
|
||||
}
|
||||
|
||||
interface KnockoutExtenders {
|
||||
throttle(target: any, timeout: number): KnockoutComputed;
|
||||
notify(target: any, notifyWhen: string): any;
|
||||
}
|
||||
|
||||
interface KnockoutUtils {
|
||||
|
||||
fieldsIncludedWithJsonPost: any[];
|
||||
|
||||
arrayForEach(array: any[], action: (any) => void ): void;
|
||||
arrayIndexOf(array: any[], item: any): number;
|
||||
arrayFirst(array: any[], predicate: (item) => bool, predicateOwner?: any): any;
|
||||
arrayRemoveItem(array: any[], itemToRemove: any): void;
|
||||
arrayGetDistinctValues(array: any[]): any[];
|
||||
arrayMap(array: any[], mapping: (item) => any): any[];
|
||||
arrayFilter(array: any[], predicate: (item) => bool): any[];
|
||||
arrayPushAll(array: any[], valuesToPush: any[]): any[];
|
||||
|
||||
extend(target, source);
|
||||
|
||||
emptyDomNode(domNode): void;
|
||||
moveCleanedNodesToContainerElement(nodes: any[]): HTMLElement;
|
||||
cloneNodes(nodesArray: any[], shouldCleanNodes: bool): any[];
|
||||
setDomNodeChildren(domNode: any, childNodes: any[]): void;
|
||||
replaceDomNodes(nodeToReplaceOrNodeArray: any, newNodesArray: any[]): void;
|
||||
setOptionNodeSelectionState(optionNode: any, isSelected: bool): void;
|
||||
stringTrim(str: string): string;
|
||||
stringTokenize(str: string, delimiter: string): string;
|
||||
stringStartsWith(str: string, startsWith: string): string;
|
||||
domNodeIsContainedBy(node: any, containedByNode: any): bool;
|
||||
domNodeIsAttachedToDocument(node: any): bool;
|
||||
tagNameLower(element: any): string;
|
||||
registerEventHandler(element: any, eventType: any, handler: Function): void;
|
||||
triggerEvent(element: any, eventType: any): void;
|
||||
unwrapObservable(value: any): any;
|
||||
toggleDomNodeCssClass(node: any, className: string, shouldHaveClass: bool): void;
|
||||
setTextContent(element: any, textContent: string): void;
|
||||
setElementName(element: any, name: string): void;
|
||||
ensureSelectElementIsRenderedCorrectly(selectElement);
|
||||
forceRefresh(node: any): void;
|
||||
ensureSelectElementIsRenderedCorrectly(selectElement: any): void;
|
||||
range(min: any, max: any): any;
|
||||
makeArray(arrayLikeObject: any): any[];
|
||||
getFormFields(form: any, fieldName: string): any[];
|
||||
parseJson(jsonString: string): any;
|
||||
stringifyJson(data: any, replacer: Function, space: string): string;
|
||||
postJson(urlOrForm: any, data: any, options: any): void;
|
||||
|
||||
domNodeDisposal;
|
||||
}
|
||||
|
||||
|
||||
interface KnockoutStatic {
|
||||
utils: KnockoutUtils;
|
||||
memoization: KnockoutMemoization;
|
||||
bindingHandlers: KnockoutBindingHandlers;
|
||||
|
||||
computed: KnockoutComputed;
|
||||
observableArray: KnockoutObservableArray;
|
||||
virtualElements: KnockoutVirtualElements;
|
||||
extenders: KnockoutExtenders;
|
||||
|
||||
applyBindings(viewModel: any, rootNode?: any): void;
|
||||
applyBindingsToDescendants(viewModel: any, rootNode: any): void;
|
||||
|
||||
observable(value: string): KnockoutObservableString;
|
||||
observable(value: Date): KnockoutObservableDate;
|
||||
observable(value: number): KnockoutObservableNumber;
|
||||
observable(value: bool): KnockoutObservableBool;
|
||||
observable(value?: any): KnockoutObservableAny;
|
||||
|
||||
contextFor(node: any): any;
|
||||
isSubscribable(instance: any): bool;
|
||||
subscribable(): void;
|
||||
toJSON(viewModel: any, replacer?: Function, space?: any): string;
|
||||
toJS(viewModel: any): any;
|
||||
isObservable(instance: any): bool;
|
||||
dataFor(node: any): any;
|
||||
}
|
||||
|
||||
// Type definitions for Knockout 2.2
|
||||
// Project: http://knockoutjs.com
|
||||
// Definitions by: Boris Yankov <https://github.com/borisyankov/>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
interface KnockoutSubscribableFunctions {
|
||||
extend(source);
|
||||
subscribe(callback: (newValue: any[]) => void, target?:any, topic?: string): KnockoutSubscription;
|
||||
notifySubscribers(valueToWrite, topic?: string);
|
||||
dispose(): void;
|
||||
}
|
||||
|
||||
interface KnockoutComputedFunctions extends KnockoutSubscribableFunctions {
|
||||
getDependenciesCount(): number;
|
||||
hasWriteFunction(): bool;
|
||||
}
|
||||
|
||||
interface KnockoutObservableFunctions extends KnockoutSubscribableFunctions {
|
||||
}
|
||||
|
||||
interface KnockoutObservableArrayFunctions extends KnockoutObservableFunctions {
|
||||
// General Array functions
|
||||
indexOf(searchElement, fromIndex?: number): number;
|
||||
slice(start: number, end?: number): any[];
|
||||
splice(start: number): any[];
|
||||
splice(start: number, deleteCount: number, ...items: any[]): any[];
|
||||
pop();
|
||||
push(...items: any[]): void;
|
||||
shift();
|
||||
unshift(...items: any[]): number;
|
||||
reverse(): any[];
|
||||
sort(): void;
|
||||
sort(compareFunction): void;
|
||||
|
||||
// Ko specific
|
||||
remove(item): any[];
|
||||
removeAll(items: any[]): any[];
|
||||
removeAll(): any[];
|
||||
|
||||
destroy(item): void;
|
||||
destroyAll(items: any[]): void;
|
||||
destroyAll(): void;
|
||||
}
|
||||
|
||||
interface KnockoutSubscribableStatic {
|
||||
fn: KnockoutSubscribableFunctions;
|
||||
|
||||
new (): KnockoutSubscription;
|
||||
}
|
||||
|
||||
interface KnockoutSubscription extends KnockoutSubscribableFunctions {
|
||||
}
|
||||
|
||||
interface KnockoutComputedStatic {
|
||||
fn: KnockoutComputedFunctions;
|
||||
|
||||
(): KnockoutComputed;
|
||||
(func: Function, context?: any): KnockoutComputed;
|
||||
(def: KnockoutComputedDefine): KnockoutComputed;
|
||||
(options?: any): KnockoutComputed;
|
||||
}
|
||||
|
||||
interface KnockoutComputed extends KnockoutComputedFunctions {
|
||||
(): any;
|
||||
(value: any): void;
|
||||
}
|
||||
|
||||
interface KnockoutObservableArrayStatic {
|
||||
|
||||
fn: KnockoutObservableArrayFunctions;
|
||||
|
||||
(): KnockoutObservableArray;
|
||||
(value: any[]): KnockoutObservableArray;
|
||||
}
|
||||
|
||||
interface KnockoutObservableArray extends KnockoutObservableArrayFunctions {
|
||||
(): any[];
|
||||
(value: any[]): void;
|
||||
}
|
||||
|
||||
interface KnockoutObservableStatic {
|
||||
fn: KnockoutObservableFunctions;
|
||||
|
||||
(value: string): KnockoutObservableString;
|
||||
(value: Date): KnockoutObservableDate;
|
||||
(value: number): KnockoutObservableNumber;
|
||||
(value: bool): KnockoutObservableBool;
|
||||
(value?: any): KnockoutObservableAny;
|
||||
}
|
||||
|
||||
interface KnockoutObservableBase extends KnockoutObservableFunctions {
|
||||
}
|
||||
|
||||
interface KnockoutObservableAny extends KnockoutObservableBase {
|
||||
|
||||
(): any;
|
||||
(value): void;
|
||||
}
|
||||
|
||||
interface KnockoutObservableString extends KnockoutObservableBase {
|
||||
(): string;
|
||||
(value: string): void;
|
||||
}
|
||||
|
||||
|
||||
interface KnockoutObservableNumber extends KnockoutObservableBase {
|
||||
(): number;
|
||||
(value: number): void;
|
||||
}
|
||||
|
||||
interface KnockoutObservableBool extends KnockoutObservableBase {
|
||||
(): bool;
|
||||
(value: bool): void;
|
||||
}
|
||||
|
||||
interface KnockoutObservableDate extends KnockoutObservableBase {
|
||||
(): Date;
|
||||
(value: Date): void;
|
||||
}
|
||||
|
||||
interface KnockoutComputedDefine {
|
||||
read(): any;
|
||||
write(any);
|
||||
}
|
||||
|
||||
interface KnockoutBindingContext {
|
||||
$parent: any;
|
||||
$parents: any[];
|
||||
$root: any;
|
||||
$data: any;
|
||||
$index?: number;
|
||||
$parentContext?: KnockoutBindingContext;
|
||||
|
||||
extend(any): any;
|
||||
createChildContext(any): any;
|
||||
}
|
||||
|
||||
interface KnockoutBindingHandler {
|
||||
init?(element: any, valueAccessor: () => any, allBindingsAccessor: () => any, viewModel: any, bindingContext: KnockoutBindingContext): void;
|
||||
update?(element: any, valueAccessor: () => any, allBindingsAccessor: () => any, viewModel: any, bindingContext: KnockoutBindingContext): void;
|
||||
options?: any;
|
||||
}
|
||||
|
||||
interface KnockoutBindingHandlers {
|
||||
// Controlling text and appearance
|
||||
visible: KnockoutBindingHandler;
|
||||
text: KnockoutBindingHandler;
|
||||
html: KnockoutBindingHandler;
|
||||
css: KnockoutBindingHandler;
|
||||
style: KnockoutBindingHandler;
|
||||
attr: KnockoutBindingHandler;
|
||||
|
||||
// Control Flow
|
||||
foreach: KnockoutBindingHandler;
|
||||
if: KnockoutBindingHandler;
|
||||
ifnot: KnockoutBindingHandler;
|
||||
with: KnockoutBindingHandler;
|
||||
|
||||
// Working with form fields
|
||||
click: KnockoutBindingHandler;
|
||||
event: KnockoutBindingHandler;
|
||||
submit: KnockoutBindingHandler;
|
||||
enable: KnockoutBindingHandler;
|
||||
disable: KnockoutBindingHandler;
|
||||
value: KnockoutBindingHandler;
|
||||
hasfocus: KnockoutBindingHandler;
|
||||
checked: KnockoutBindingHandler;
|
||||
options: KnockoutBindingHandler;
|
||||
selectedOptions: KnockoutBindingHandler;
|
||||
uniqueName: KnockoutBindingHandler;
|
||||
|
||||
// Rendering templates
|
||||
template: KnockoutBindingHandler;
|
||||
}
|
||||
|
||||
interface KnockoutMemoization {
|
||||
memoize(callback);
|
||||
unmemoize(memoId, callbackParams);
|
||||
unmemoizeDomNodeAndDescendants(domNode, extraCallbackParamsArray);
|
||||
parseMemoText(memoText);
|
||||
}
|
||||
|
||||
interface KnockoutVirtualElements {
|
||||
allowedBindings;
|
||||
emptyNode;
|
||||
firstChild;
|
||||
insertAfter;
|
||||
nextSibling;
|
||||
prepend;
|
||||
setDomNodeChildren;
|
||||
}
|
||||
|
||||
interface KnockoutExtenders {
|
||||
throttle(target: any, timeout: number): KnockoutComputed;
|
||||
notify(target: any, notifyWhen: string): any;
|
||||
}
|
||||
|
||||
interface KnockoutUtils {
|
||||
|
||||
fieldsIncludedWithJsonPost: any[];
|
||||
|
||||
arrayForEach(array: any[], action: (any) => void ): void;
|
||||
arrayIndexOf(array: any[], item: any): number;
|
||||
arrayFirst(array: any[], predicate: (item) => bool, predicateOwner?: any): any;
|
||||
arrayRemoveItem(array: any[], itemToRemove: any): void;
|
||||
arrayGetDistinctValues(array: any[]): any[];
|
||||
arrayMap(array: any[], mapping: (item) => any): any[];
|
||||
arrayFilter(array: any[], predicate: (item) => bool): any[];
|
||||
arrayPushAll(array: any[], valuesToPush: any[]): any[];
|
||||
|
||||
extend(target, source);
|
||||
|
||||
emptyDomNode(domNode): void;
|
||||
moveCleanedNodesToContainerElement(nodes: any[]): HTMLElement;
|
||||
cloneNodes(nodesArray: any[], shouldCleanNodes: bool): any[];
|
||||
setDomNodeChildren(domNode: any, childNodes: any[]): void;
|
||||
replaceDomNodes(nodeToReplaceOrNodeArray: any, newNodesArray: any[]): void;
|
||||
setOptionNodeSelectionState(optionNode: any, isSelected: bool): void;
|
||||
stringTrim(str: string): string;
|
||||
stringTokenize(str: string, delimiter: string): string;
|
||||
stringStartsWith(str: string, startsWith: string): string;
|
||||
domNodeIsContainedBy(node: any, containedByNode: any): bool;
|
||||
domNodeIsAttachedToDocument(node: any): bool;
|
||||
tagNameLower(element: any): string;
|
||||
registerEventHandler(element: any, eventType: any, handler: Function): void;
|
||||
triggerEvent(element: any, eventType: any): void;
|
||||
unwrapObservable(value: any): any;
|
||||
toggleDomNodeCssClass(node: any, className: string, shouldHaveClass: bool): void;
|
||||
setTextContent(element: any, textContent: string): void;
|
||||
setElementName(element: any, name: string): void;
|
||||
ensureSelectElementIsRenderedCorrectly(selectElement);
|
||||
forceRefresh(node: any): void;
|
||||
ensureSelectElementIsRenderedCorrectly(selectElement: any): void;
|
||||
range(min: any, max: any): any;
|
||||
makeArray(arrayLikeObject: any): any[];
|
||||
getFormFields(form: any, fieldName: string): any[];
|
||||
parseJson(jsonString: string): any;
|
||||
stringifyJson(data: any, replacer: Function, space: string): string;
|
||||
postJson(urlOrForm: any, data: any, options: any): void;
|
||||
|
||||
domNodeDisposal;
|
||||
}
|
||||
|
||||
|
||||
interface KnockoutStatic {
|
||||
utils: KnockoutUtils;
|
||||
memoization: KnockoutMemoization;
|
||||
bindingHandlers: KnockoutBindingHandlers;
|
||||
virtualElements: KnockoutVirtualElements;
|
||||
extenders: KnockoutExtenders;
|
||||
|
||||
applyBindings(viewModel: any, rootNode?: any): void;
|
||||
applyBindingsToDescendants(viewModel: any, rootNode: any): void;
|
||||
|
||||
subscribable: KnockoutSubscribableStatic;
|
||||
observable: KnockoutObservableStatic;
|
||||
computed: KnockoutComputedStatic;
|
||||
observableArray: KnockoutObservableArrayStatic;
|
||||
|
||||
contextFor(node: any): any;
|
||||
isSubscribable(instance: any): bool;
|
||||
toJSON(viewModel: any, replacer?: Function, space?: any): string;
|
||||
toJS(viewModel: any): any;
|
||||
isObservable(instance: any): bool;
|
||||
dataFor(node: any): any;
|
||||
}
|
||||
|
||||
declare var ko: KnockoutStatic;
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user