Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

typescript definition? #2

Open
darewreck54 opened this issue Jul 7, 2017 · 4 comments
Open

typescript definition? #2

darewreck54 opened this issue Jul 7, 2017 · 4 comments

Comments

@darewreck54
Copy link

darewreck54 commented Jul 7, 2017

Is there an a @types (Typescript) definition for this library?

@machadogj
Copy link
Owner

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.

@nodren
Copy link

nodren commented Jan 3, 2019

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.

@DocCaliban
Copy link

DocCaliban commented Apr 13, 2019

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.

@stelmakhivan
Copy link

stelmakhivan commented Oct 24, 2020

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;
  };
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants