mirror of
https://github.com/wassname/DefinitelyTyped.git
synced 2026-08-30 11:14:27 +08:00
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.
268 lines
8.0 KiB
TypeScript
268 lines
8.0 KiB
TypeScript
// 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; |