Comments (11)
Hi @abdurahmanus
From v2.0.4 both of your use-cases should work correctly: #48
// 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 strictFunctionTypes
is already tracked in #44, so there's no need for duplication
from typesafe-actions.
also it would be helpful if we could create actions using createAsyncActions helper specifying the type of meta
from typesafe-actions.
Ad 1) this is a valid point, adding support for this case is easy, will need to update validation checks
Ad 2) not sure what you want here, it's how TS works, nothing actionable or related to the library
Regarding types issue it is related to react-redux@6
types, not in this library, please use react-redux@5
until there is a working solution: #42
To extend createAsyncActions
API we need a proposal
from typesafe-actions.
I've tried react-redux types v5
this code
const ADD = 'ADD'
interface Todo {
title: string;
id: number;
completed: boolean;
}
export const add = createStandardAction(ADD).map(
({ title }: { title: string }) => ({
payload: { title, id: 12, completed: false } as Todo,
})
);
still don't work
[ts]
Argument of type '({ title }: { title: string; }) => { payload: Todo; }' is not assignable to parameter of type '(payload?: { title: string; } | undefined, meta?: void | undefined) => { payload: Todo; }'.
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; }'.
from typesafe-actions.
What I want at 2) is to avoid dancing with payload type. Like this:
const someOtherAction = createStandardAction('somethingElse').map((payload: number) => ({
meta: 'some meta info',
payload,
}))
Don't sure if it possible
from typesafe-actions.
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')
from typesafe-actions.
interface MetaType {
s: string;
}
const increment = createStandardAction('INCREMENT')<void, MetaType>();
gives me {type: 'INCREMENT'} without meta at all
from typesafe-actions.
Maybe problems with types in my case because of different settings in tsconfig.json
{
"compilerOptions": {
"jsx": "react",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "ClientApp/dist/",
"sourceMap": true,
"strict": true,
"target": "es5",
"lib": [ "es6", "dom" ],
"noEmitOnError": true,
"baseUrl": "./",
"paths": {
...
}
},
"include": [ "ClientApp/**/*" ]
}
from typesafe-actions.
"strictFunctionTypes": false, removes some ts warnings/errors, but it's not a solution
from typesafe-actions.
"strictFunctionTypes": false, removes some ts warnings/errors, but it's not a solution
Ok this looks like something we have to investigate, thanks. #44
EDIT: From deeper analysis looks like use-case 2 issue is the symptom of strictFunctionTypes
issue, so should be resolved with #44
from typesafe-actions.
Fix for use-case 1 issue tracked here: #47
from typesafe-actions.
Related Issues (20)
- Can I use createAction with a static meta in a way that createReducer.handleAction allows?
- isActionOf - Argument contains array with invalid element at index 0 HOT 2
- Any idea about Redux-Model
- Is it even possible to type thunks properly?
- What is the future of the project? HOT 2
- Infer action and return type from action creator HOT 1
- Access state in createAsyncAction HOT 1
- [5.1] handleAction throws error in test environment using AVA
- Using RootAction makes TypeScript compilation and vscode intellisense extremly slow HOT 1
- Suggestion for safer redux-saga types with typed-redux-saga
- Wrong Documentation HOT 1
- Error: 'createAction' is not exported by typesafe-actions.umd.production.js
- Import declaration conflicts with local declaration of 'RootState'.
- Documentation for polymorphic action
- handleAction allows return object with properties not pesent in the state type HOT 2
- Request: Change branch name master to main
- Why createReducer's handleAction exclude InputAction and HandledAction?
- The result type of createReducer is any instead of Reducer HOT 2
- Allow createReducer to be used without initial state HOT 6
- Error After upgrade from Angular 13 to 14 (A type annotation is necessary) HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typesafe-actions.