diff --git a/mithril/mithril.d.ts b/mithril/mithril.d.ts index 39c9539f8..e01dbcc02 100644 --- a/mithril/mithril.d.ts +++ b/mithril/mithril.d.ts @@ -8,25 +8,31 @@ interface MithrilStatic { (selector: string, attributes: Object, children?: any): MithrilVirtualElement; (selector: string, children?: any): MithrilVirtualElement; - prop(value?: any): (value?: any) => any; + prop(value?: T): (value?: T) => T; + prop(promise: MithrilPromise): MithrilPromiseProperty; withAttr(property: string, callback: (value: any) => void): (e: Event) => any; module(rootElement: Node, module: MithrilModule): void; trust(html: string): String; render(rootElement: Element, children?: any): void; render(rootElement: HTMLDocument, children?: any): void; - redraw(): void; + redraw: MithrilRedraw; route(rootElement: Element, defaultRoute: string, routes: { [key: string]: MithrilModule }): void; route(rootElement: HTMLDocument, defaultRoute: string, routes: { [key: string]: MithrilModule }): void; route(path: string, params?: any, shouldReplaceHistory?: boolean): void; route(): string; route(element: Element, isInitialized: boolean): void; - request(options: MithrilXHROptions): MithrilPromise; - deferred(): MithrilDeferred; - sync(promises: MithrilPromise[]): MithrilPromise; + request(options: MithrilXHROptions): MithrilPromise; + deferred(): MithrilDeferred; + sync(promises: MithrilPromise[]): MithrilPromise; startComputation(): void; endComputation(): void; } +interface MithrilRedraw { + (): void; + strategy: (value?: string) => string; +} + interface MithrilVirtualElement { tag: string; attrs: Object; @@ -34,19 +40,26 @@ interface MithrilVirtualElement { } interface MithrilModule { - controller: Function; - view: Function; + controller: Function; + view: (controller?: any) => MithrilVirtualElement; } -interface MithrilDeferred { - resolve(value?: any): void; - reject(value?: any): void; - promise: MithrilPromise; +interface MithrilDeferred { + resolve(value?: T): void; + reject(value?: any): void; + promise: MithrilPromise; } -interface MithrilPromise { - (value?: any): any; - then(successCallback?: (value: any) => any, errorCallback?: (value: any) => any): MithrilPromise; +interface MithrilPromise { + (value?: T): T; + then(successCallback?: (value: T) => R, errorCallback?: (value: any) => any): MithrilPromise; + then(successCallback?: (value: T) => MithrilPromise, errorCallback?: (value: any) => any): MithrilPromise; +} + +interface MithrilPromiseProperty extends MithrilPromise { + (): T; + (value: T): T; + toJSON(): T; } interface MithrilXHROptions {