Merge pull request #806 from mrtracy/parameterized-components

Typescript: Support for Parameterized Components
This commit is contained in:
Leo Horie 2015-10-14 13:28:53 -04:00
commit cba577dfd0

267
mithril.d.ts vendored
View file

@ -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
* *