-
-
Notifications
You must be signed in to change notification settings - Fork 99
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
Creating actions causing some problems #43
Comments
also it would be helpful if we could create actions using createAsyncActions helper specifying the type of meta |
Ad 1) this is a valid point, adding support for this case is easy, will need to update validation checks Regarding types issue it is related to To extend |
I've tried react-redux types v5
still don't work [ts] |
What I want at 2) is to avoid dancing with payload type. Like this:
Don't sure if it possible |
Ad 1) working fine here: https://github.com/piotrwitek/typesafe-actions-todo-app/blob/master/src/features/todos/actions.ts Ad 2) map is for custom logic, better to use this in your case: const increment = createStandardAction('INCREMENT')<void, MetaType>();
increment(undefined, 'meta info') |
interface MetaType { gives me {type: 'INCREMENT'} without meta at all |
Maybe problems with types in my case because of different settings in tsconfig.json |
"strictFunctionTypes": false, removes some ts warnings/errors, but it's not a solution |
Fix for use-case 1 issue tracked here: #47 |
Hi @abdurahmanus // case 1)
const someAction = createAction('something', resolve => () => resolve(undefined, 'some meta info'));
someAction() // { type: 'something'; meta: string; }
// case 2)
const someOtherAction = createStandardAction('somethingElse').map(() => ({
meta: 'some meta info',
}))
someOtherAction() // { type: 'somethingElse'; meta: string; } API documentation was updated with all the above examples of "meta only" cases. Already released a new version to npm, enjoy! PS: I'm closing this as all the mentioned cases are supported now, and the issue with |
I have 2 use cases
const someAction = createAction('something', resolve => () => resolve(undefined, 'some meta info'))
which gives me { type: 'something' }, but i expect {type: 'something', meta: string }
in this case I have to mark payload parameter as optional and after tell that it's actualy not, using ! operator to get correct action type ({type: 'somethingElse', payload: number, meta: string})
actualy example from docs
doesn't work in my project (I use typescript v2.8.3, redux v4, typesafe-actions v2.0.3) with this error message:
[ts]
Argument of type '({ title }: { title: string; }) => { payload: { title: string; id: any; completed: boolean; }; }' is not assignable to parameter of type '(payload?: { title: string; } | undefined, meta?: void | undefined) => { payload: { title: string...'.
Types of parameters '__0' and 'payload' are incompatible.
Type '{ title: string; } | undefined' is not assignable to type '{ title: string; }'.
Type 'undefined' is not assignable to type '{ title: string; }'.
because payload param is optional
The text was updated successfully, but these errors were encountered: