saludos estoy teniendo un pequeño problema al implementar un useReducer en una aplicación typeStript, tengo varios errores (todos en el reductor) pero este es el más común a través de la aplicación, cada vez que llamo a la función de envío salta el error de "0 argumentos esperados, pero obtuve 1"
esta es la funcion del reductor
interface Edit { id?: number; todo?: string; } type Actions = { type: "add"; payload: string } | { type: "remove"; payload: number } | { type: "done"; payload: number } | { type: "all"; payload: Todo[] } | { type: "edit"; payload: Edit }; const reducerFunction = (state: Todo[], actions: Actions) => { const todoActions = { add: [...state, { id: Date.now(), todo: actions.payload, isDone: false }], edit: state.map((todo) => todo.id === actions.payload.id ? { ...todo, todo: actions.payload.todo } : todo ), remove: state.filter((todo) => todo.id !== actions.payload), done: state.map((todo) => todo.id === actions.payload ? { ...todo, isDone: !todo.isDone } : todo ), all: state = actions.payload }; return todoActions[actions.type] ?? state; };el reductor y uno de los despachos
const [todos, dispatch] = useReducer(reducerFunction, []); /*-----------*/ dispatch({ type: "add", payload: todo });puedes ver toda la aplicación en este codesanbox: https://codesandbox.io/s/trello-todo-component-clone-ebpqw4?file=/src/App.tsx:1465-1507
Para que TypeScript pueda inferir el tipo de estado, debe agregar un tipo de retorno a reducerFunction .
const reducerFunction = (state: Todo[], actions: Actions): Todo[] Como alternativa, puede agregar el tipo de reducerFunction a la llamada useReducer .
const [todos, dispatch] = useReducer<(arg1: Todo[], actions: Actions) => Todo[]>(reducerFunction, []);