Merge pull request #806 from mrtracy/parameterized-components
Typescript: Support for Parameterized Components
This commit is contained in:
commit
cba577dfd0
1 changed files with 238 additions and 29 deletions
267
mithril.d.ts
vendored
267
mithril.d.ts
vendored
|
|
@ -28,22 +28,6 @@ declare module _mithril {
|
||||||
MithrilComponent<T>>
|
MithrilComponent<T>>
|
||||||
): MithrilVirtualElement<T>;
|
): MithrilVirtualElement<T>;
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes a component for use with m.render, m.mount, etc.
|
|
||||||
*
|
|
||||||
* @param component A component.
|
|
||||||
* @param args Arguments to optionally pass to the component.
|
|
||||||
* @return A component.
|
|
||||||
*
|
|
||||||
* @see m.render
|
|
||||||
* @see m.mount
|
|
||||||
* @see m
|
|
||||||
*/
|
|
||||||
<T extends MithrilController>(
|
|
||||||
component: MithrilComponent<T>,
|
|
||||||
...args: any[]
|
|
||||||
): MithrilComponent<T>;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a virtual element for use with m.render, m.mount, etc.
|
* Creates a virtual element for use with m.render, m.mount, etc.
|
||||||
*
|
*
|
||||||
|
|
@ -67,18 +51,121 @@ declare module _mithril {
|
||||||
* Initializes a component for use with m.render, m.mount, etc.
|
* Initializes a component for use with m.render, m.mount, etc.
|
||||||
* Shorthand for m.component.
|
* Shorthand for m.component.
|
||||||
*
|
*
|
||||||
* @param selector A component.
|
* @param component A mithril component.
|
||||||
* @param args Arguments to optionally pass to the component.
|
* @return A mithril component.
|
||||||
* @return A component.
|
|
||||||
*
|
*
|
||||||
* @see m.render
|
* @see m.render
|
||||||
* @see m.mount
|
* @see m.mount
|
||||||
* @see m.component
|
* @see m.component
|
||||||
*/
|
*/
|
||||||
<T extends MithrilController>(
|
<TController extends MithrilController>(
|
||||||
component: MithrilComponent<T>,
|
component: MithrilComponent<TController>
|
||||||
...args: any[]
|
): MithrilComponent<TController>;
|
||||||
): MithrilComponent<T>;
|
|
||||||
|
/**
|
||||||
|
* Initializes a component for use with m.render, m.mount, etc.
|
||||||
|
* Shorthand for m.component.
|
||||||
|
*
|
||||||
|
* @param component A parameterized component.
|
||||||
|
* @param arg1 First argument to bind to the component.
|
||||||
|
* @return A component bound with the supplied arguments.
|
||||||
|
*
|
||||||
|
* @see m.render
|
||||||
|
* @see m.mount
|
||||||
|
* @see m.component
|
||||||
|
*/
|
||||||
|
<TController extends MithrilController, T1>(
|
||||||
|
component: ParameterizedMithrilComponent<TController, T1, void, void, void>,
|
||||||
|
arg1: T1
|
||||||
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a component for use with m.render, m.mount, etc.
|
||||||
|
* Shorthand for m.component.
|
||||||
|
*
|
||||||
|
* @param component A parameterized component.
|
||||||
|
* @param arg1 First argument to bind to the component.
|
||||||
|
* @param arg2 Second argument to bind to the component.
|
||||||
|
* @return A component bound with the supplied arguments.
|
||||||
|
*
|
||||||
|
* @see m.render
|
||||||
|
* @see m.mount
|
||||||
|
* @see m.component
|
||||||
|
*/
|
||||||
|
<TController extends MithrilController, T1, T2>(
|
||||||
|
component: ParameterizedMithrilComponent<TController, T1, T2, void, void>,
|
||||||
|
arg1: T1,
|
||||||
|
arg2: T2
|
||||||
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a component for use with m.render, m.mount, etc.
|
||||||
|
* Shorthand for m.component.
|
||||||
|
*
|
||||||
|
* @param component A parameterized component.
|
||||||
|
* @param arg1 First argument to bind to the component.
|
||||||
|
* @param arg2 Second argument to bind to the component.
|
||||||
|
* @param arg3 Third argument to bind to the component.
|
||||||
|
* @return A component bound with the supplied arguments.
|
||||||
|
*
|
||||||
|
* @see m.render
|
||||||
|
* @see m.mount
|
||||||
|
* @see m.component
|
||||||
|
*/
|
||||||
|
<TController extends MithrilController, T1, T2, T3>(
|
||||||
|
component: ParameterizedMithrilComponent<TController, T1, T2, T3, void>,
|
||||||
|
arg1: T1,
|
||||||
|
arg2: T2,
|
||||||
|
arg3: T3
|
||||||
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a parameterized component for use with m.render, m.mount, etc.
|
||||||
|
* Shorthand for m.component.
|
||||||
|
*
|
||||||
|
* @param component A parameterized component.
|
||||||
|
* @param arg1 First argument to bind to the component.
|
||||||
|
* @param arg2 Second argument to bind to the component.
|
||||||
|
* @param arg3 Third argument to bind to the component.
|
||||||
|
* @param arg4 Fourth argument to bind to the component.
|
||||||
|
* @return A component bound with the supplied arguments.
|
||||||
|
*
|
||||||
|
* @see m.render
|
||||||
|
* @see m.mount
|
||||||
|
* @see m.component
|
||||||
|
*/
|
||||||
|
<TController extends MithrilController, T1, T2, T3, T4>(
|
||||||
|
component: ParameterizedMithrilComponent<TController, T1, T2, T3, T4>,
|
||||||
|
arg1: T1,
|
||||||
|
arg2: T2,
|
||||||
|
arg3: T3,
|
||||||
|
arg4: T4
|
||||||
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a parameterized component for use with m.render, m.mount, etc.
|
||||||
|
* Shorthand for m.component.
|
||||||
|
*
|
||||||
|
* @param component A parameterized component.
|
||||||
|
* @param arg1 First argument to bind to the component.
|
||||||
|
* @param arg2 Second argument to bind to the component.
|
||||||
|
* @param arg3 Third argument to bind to the component.
|
||||||
|
* @param arg4 Fourth argument to bind to the component.
|
||||||
|
* @param args Additional optional arguments which are not type checked.
|
||||||
|
* @return A component bound with the supplied arguments.
|
||||||
|
*
|
||||||
|
* @see m.render
|
||||||
|
* @see m.mount
|
||||||
|
* @see m.component
|
||||||
|
*/
|
||||||
|
<TController extends MithrilController, T1, T2, T3, T4>(
|
||||||
|
component: ParameterizedMithrilComponent<TController, T1, T2, T3, T4>,
|
||||||
|
arg1: T1,
|
||||||
|
arg2: T2,
|
||||||
|
arg3: T3,
|
||||||
|
arg4: T4,
|
||||||
|
...args:any[]
|
||||||
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a getter-setter function that wraps a Mithril promise. Useful
|
* Creates a getter-setter function that wraps a Mithril promise. Useful
|
||||||
|
|
@ -149,18 +236,116 @@ declare module _mithril {
|
||||||
/**
|
/**
|
||||||
* Initializes a component for use with m.render, m.mount, etc.
|
* Initializes a component for use with m.render, m.mount, etc.
|
||||||
*
|
*
|
||||||
* @param selector A component.
|
* @param component A mithril component.
|
||||||
* @param args Arguments to optionally pass to the component.
|
* @return A mithril component.
|
||||||
* @return A component.
|
|
||||||
*
|
*
|
||||||
* @see m.render
|
* @see m.render
|
||||||
* @see m.mount
|
* @see m.mount
|
||||||
* @see m
|
* @see m
|
||||||
*/
|
*/
|
||||||
component<T extends MithrilController>(
|
component<TController extends MithrilController>(
|
||||||
component: MithrilComponent<T>,
|
component: MithrilComponent<TController>
|
||||||
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a parameterized component for use with m.render, m.mount, etc.
|
||||||
|
*
|
||||||
|
* @param component A parameterized component.
|
||||||
|
* @param arg1 First argument to bind to the component.
|
||||||
|
* @return A component bound with the supplied arguments.
|
||||||
|
*
|
||||||
|
* @see m.render
|
||||||
|
* @see m.mount
|
||||||
|
* @see m
|
||||||
|
*/
|
||||||
|
component<TController extends MithrilController, T1>(
|
||||||
|
component: ParameterizedMithrilComponent<TController, T1, void, void, void>,
|
||||||
|
arg1: T1
|
||||||
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a parameterized component for use with m.render, m.mount, etc.
|
||||||
|
*
|
||||||
|
* @param component A parameterized component.
|
||||||
|
* @param arg1 First argument to bind to the component.
|
||||||
|
* @param arg2 Second argument to bind to the component.
|
||||||
|
* @return A component bound with the supplied arguments.
|
||||||
|
*
|
||||||
|
* @see m.render
|
||||||
|
* @see m.mount
|
||||||
|
* @see m
|
||||||
|
*/
|
||||||
|
component<TController extends MithrilController, T1, T2>(
|
||||||
|
component: ParameterizedMithrilComponent<TController, T1, T2, void, void>,
|
||||||
|
arg1: T1,
|
||||||
|
arg2: T2
|
||||||
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a parameterized component for use with m.render, m.mount, etc.
|
||||||
|
*
|
||||||
|
* @param component A parameterized component.
|
||||||
|
* @param arg1 First argument to bind to the component.
|
||||||
|
* @param arg2 Second argument to bind to the component.
|
||||||
|
* @param arg3 Third argument to bind to the component.
|
||||||
|
* @return A component bound with the supplied arguments.
|
||||||
|
*
|
||||||
|
* @see m.render
|
||||||
|
* @see m.mount
|
||||||
|
* @see m
|
||||||
|
*/
|
||||||
|
component<TController extends MithrilController, T1, T2, T3>(
|
||||||
|
component: ParameterizedMithrilComponent<TController, T1, T2, T3, void>,
|
||||||
|
arg1: T1,
|
||||||
|
arg2: T2,
|
||||||
|
arg3: T3
|
||||||
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a parameterized component for use with m.render, m.mount, etc.
|
||||||
|
*
|
||||||
|
* @param component A parameterized component.
|
||||||
|
* @param arg1 First argument to bind to the component.
|
||||||
|
* @param arg2 Second argument to bind to the component.
|
||||||
|
* @param arg3 Third argument to bind to the component.
|
||||||
|
* @param arg4 Fourth argument to bind to the component.
|
||||||
|
* @return A component bound with the supplied arguments.
|
||||||
|
*
|
||||||
|
* @see m.render
|
||||||
|
* @see m.mount
|
||||||
|
* @see m
|
||||||
|
*/
|
||||||
|
component<TController extends MithrilController, T1, T2, T3, T4>(
|
||||||
|
component: ParameterizedMithrilComponent<TController, T1, T2, T3, T4>,
|
||||||
|
arg1: T1,
|
||||||
|
arg2: T2,
|
||||||
|
arg3: T3,
|
||||||
|
arg4: T4
|
||||||
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a parameterized component for use with m.render, m.mount, etc.
|
||||||
|
*
|
||||||
|
* @param component A parameterized component.
|
||||||
|
* @param arg1 First argument to bind to the component.
|
||||||
|
* @param arg2 Second argument to bind to the component.
|
||||||
|
* @param arg3 Third argument to bind to the component.
|
||||||
|
* @param arg4 Fourth argument to bind to the component.
|
||||||
|
* @param args Additional optional arguments which are not type checked.
|
||||||
|
* @return A component bound with the supplied arguments.
|
||||||
|
*
|
||||||
|
* @see m.render
|
||||||
|
* @see m.mount
|
||||||
|
* @see m
|
||||||
|
*/
|
||||||
|
component<TController extends MithrilController, T1, T2, T3, T4>(
|
||||||
|
component: ParameterizedMithrilComponent<TController, T1, T2, T3, T4>,
|
||||||
|
arg1: T1,
|
||||||
|
arg2: T2,
|
||||||
|
arg3: T3,
|
||||||
|
arg4: T4,
|
||||||
...args: any[]
|
...args: any[]
|
||||||
): MithrilComponent<T>;
|
): MithrilComponent<TController>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Trust this string of HTML.
|
* Trust this string of HTML.
|
||||||
|
|
@ -599,6 +784,30 @@ declare module _mithril {
|
||||||
view(ctrl: T): MithrilVirtualElement<T>;
|
view(ctrl: T): MithrilVirtualElement<T>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This represents a parameterized MithrilComponent with up to six parameters,
|
||||||
|
* intended to be instantiated via m.component().
|
||||||
|
*
|
||||||
|
* @see m
|
||||||
|
* @see m.component
|
||||||
|
*/
|
||||||
|
interface ParameterizedMithrilComponent<TController extends MithrilController, T1, T2, T3, T4> {
|
||||||
|
/**
|
||||||
|
* The component's controller.
|
||||||
|
*
|
||||||
|
* @see m.component
|
||||||
|
*/
|
||||||
|
controller: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, ...args: any[]) => TController;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* creates a view out of virtual elements.
|
||||||
|
*
|
||||||
|
* @see m.component
|
||||||
|
*/
|
||||||
|
view(ctrl: TController, arg1: T1, arg2: T2, arg3: T3, arg4: T4, ...args:any[]): MithrilVirtualElement<TController>;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the base interface for property getter-setters
|
* This is the base interface for property getter-setters
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue