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

Allow For Passing Meta Type ActionCreatorFactory.async and AsyncActionCreators #62

Open
dcurletti opened this issue Jun 26, 2018 · 1 comment
Milestone

Comments

@dcurletti
Copy link

Hi there-

Issue: I am unable to pass a TypeScript Type for the meta object that an actionCreator produces.


Example:
I want to create async actions for an event "login":

interface LogInData { email: string }
interface LogInResponseData { token: string }
interface LogInErrorData { error: string }

const logIn = actionCreator.async<LogInData, LogInResponseData, LogInErrorData>('LOGIN');

I also want to pass data via the meta object on the action.

dispatch(login.started({email: '[email protected]'}, {info: true}))

I now want to define what my action will look like, as well as create the saga:

import {Action} from 'redux';

interface LoginAction extends Action {
  meta: { info: boolean }
}

export function* loginFunc(action: LoginAction) {
  ...irrelevant
}

takeEvery(logIn.started,loginFunc),

The issue arises when you try to test the code:

const startAction = logIn.start({email: '[email protected]'}, {info: true})

loginFunc(startAction)

startAction will throw a TypeScript error because its meta property has a different definition than that of LoginAction


My suggestion would be to add something like:

const logIn = actionCreator.async<LogInData, LogInResponseData, LogInErrorData, MetaData>('LOGIN');
@aikoven
Copy link
Owner

aikoven commented Jul 2, 2018

This sounds good to me, especially since we can now use defaults for generic parameters, so this won't break existing code.

However, I don't really have much time to work on this now, but I'd happily accept PRs!

@aikoven aikoven added this to the v4.0 milestone Sep 14, 2019
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

2 participants