redux-thunk-actions
redux-thunk-actions copied to clipboard
typescript definition?
Is there an a @types (Typescript) definition for this library?
Not yet, but it's a very good idea! Let me know if you are up for it, or else I'll try to do it soon.
i'm by no means an expert at it, but here's something to at least get you started:
export function createActionThunk(type: string, fn: () => any): {
(): Promise<any>
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1>(type: string, fn: (v1: T1) => any, ...args: any): {
(v1: T1): Promise<any>
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2>(type: string, fn: (v1: T1, v2: T2) => any, ...args: any): {
(v1: T1, v2: T2): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2, T3>(type: string, fn: (v1: T1, v2: T2, v3: T3) => any, ...args: any): {
(v1: T1, v2: T2, v3: T3): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2, T3, T4>(type: string, fn: (v1: T1, v2: T2, v3: T3, v4: T4) => any, ...args: any): {
(v1: T1, v2: T2, v3: T3, v4: T4): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2, T3, T4, T5>(type: string, fn: (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5) => any, ...args: any): {
(v1: T1, v2: T2, v3: T3, v4: T4, v5: T5): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2, T3, T4, T5, T6>(type: string, fn: (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => any, ...args: any): {
(v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2, T3, T4, T5, T6, T7>(type: string, fn: (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7) => any, ...args: any): {
(v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export as namespace ReduxThunkActions;
saving that as an index.d.ts for an @types/ package works well.
Quick update for anyone seeing this, who is using the latest typescript
create a folder called 'redux-thunk-actions' somewhere in your project. add a file index.d.ts paste the following into that file then save and everything should work.
declare module 'redux-thunk-actions' {
export function createActionThunk(type: string, fn: () => any): {
(): Promise<any>
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1>(type: string, fn: (v1: T1) => any, ...args: any): {
(v1: T1): Promise<any>
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2>(type: string, fn: (v1: T1, v2: T2) => any, ...args: any): {
(v1: T1, v2: T2): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2, T3>(type: string, fn: (v1: T1, v2: T2, v3: T3) => any, ...args: any): {
(v1: T1, v2: T2, v3: T3): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2, T3, T4>(type: string, fn: (v1: T1, v2: T2, v3: T3, v4: T4) => any, ...args: any): {
(v1: T1, v2: T2, v3: T3, v4: T4): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2, T3, T4, T5>(type: string, fn: (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5) => any, ...args: any): {
(v1: T1, v2: T2, v3: T3, v4: T4, v5: T5): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2, T3, T4, T5, T6>(type: string, fn: (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => any, ...args: any): {
(v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
export function createActionThunk<T1, T2, T3, T4, T5, T6, T7>(type: string, fn: (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7) => any, ...args: any): {
(v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7): any
readonly NAME: string
readonly START: string
readonly SUCCEEDED: string
readonly FAILED: string
readonly ENDED: string
};
}
Thanks to @nodren for his initial work. I might work on a NPM package in the future.
or
declare module 'redux-thunk-actions' {
import { AnyAction, Dispatch } from 'redux';
export function createActionThunk(
type: string,
fn: () => any,
): {
(): Promise<any>;
readonly NAME: string;
readonly START: string;
readonly SUCCEEDED: string;
readonly FAILED: string;
readonly ENDED: string;
};
export function createActionThunk<T1>(
type: string,
fn: (v1: T1, { dispatch, getState, extra }: ThunkType) => any,
...args: any
): {
(v1: T1, v2?: ThunkType): Promise<any>;
readonly NAME: string;
readonly START: string;
readonly SUCCEEDED: string;
readonly FAILED: string;
readonly ENDED: string;
};
export function createActionThunk<T1, T2>(
type: string,
fn: (v1: T1, v2: T2, { dispatch, getState, extra }: ThunkType) => any,
...args: any
): {
(v1: T1, v2: T2, v3?: ThunkType): Promise<any>;
readonly NAME: string;
readonly START: string;
readonly SUCCEEDED: string;
readonly FAILED: string;
readonly ENDED: string;
};
export function createActionThunk<T1, T2, T3>(
type: string,
fn: (
v1: T1,
v2: T2,
v3: T3,
{ dispatch, getState, extra }: ThunkType,
) => any,
...args: any
): {
(v1: T1, v2: T2, v3: T3, v4?: ThunkType): Promise<any>;
readonly NAME: string;
readonly START: string;
readonly SUCCEEDED: string;
readonly FAILED: string;
readonly ENDED: string;
};
export function createActionThunk<T1, T2, T3, T4>(
type: string,
fn: (
v1: T1,
v2: T2,
v3: T3,
v4: T4,
{ dispatch, getState, extra }: ThunkType,
) => any,
...args: any
): {
(v1: T1, v2: T2, v3: T3, v4: T4, v5?: ThunkType): Promise<any>;
readonly NAME: string;
readonly START: string;
readonly SUCCEEDED: string;
readonly FAILED: string;
readonly ENDED: string;
};
export type ThunkType = {
dispatch: Dispatch<AnyAction>;
getState: <T>() => T;
extra: boolean;
};
}