JavaScript function that holds two arguments

I'm in the process of adapting these Redux actions to Vuex.
Upon examination, I noticed that the actions have

2 placeholders(I'm unsure of the correct term)
for arguments.
For illustration purposes, it looks something like this:

export const priceAction = (amount)//first placeholder => async (dispatch, getState)//second placeholder => { ... }

Now, in my Vue project, I'm attempting to organize Vuex in a modular way, like this:

Here's how the Price module is structured:

store/module/Price
/ actions.ts
/ index.ts

In the Price/actions.ts

export const priceAction = (amount: number) => async ({commit, dispatch}: ActionContext<State, RootStateType>, state: State) => { ... }

In the Price/index.ts

import * as actions from './actions'
import { state } from './state-type'
 
export default {
    namespaced: true,
    state: state,
    getters: {},
    mutations: {},
    actions: actions
}

Now, in the main reducer file store.ts

import Price from './module/Price'
export const store = createStore({
    modules: {
        Price //-> This leads to a series of errors
    }
})

The errors:

- Types of property 'actions' are incompatible.
- Type 'typeof import("D:/workspaces/proj/myproj/src/store/modules/Price/actions")' is not assignable to type 'ActionTree<any, { mainStore: string; }>'.
- Property 'priceAction ' is incompatible with index signature.
- Types of parameters 'amount' and 'injectee' are incompatible.

Answer №1

It appears that your action.ts file is incorrect. You should make sure to export something similar to the following:

export const actions: ActionTree<PriceState, RootState> = {
    myAction({ commit }) {
        // ... some code here
        commit('myMutation', data)
    },

}

To gain a better understanding of this concept, I highly recommend reading the article available at: https://codeburst.io/vuex-and-typescript-3427ba78cfa8

I have successfully implemented this in my own projects and can confirm its effectiveness.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Acquire information from an Angular service and output it to the console

I am having trouble logging data from my service file in the app.component file. It keeps showing up as undefined. Below is the code snippet: service.ts getBillingCycles() { return this.http.get('../../assets/download_1.json'); }; app.com ...

Prevent the click event on an Angular component

I am currently utilizing the component found on this link: I have not been able to locate a function or property that disables the component state, making it impossible to select dates on the calendar. Due to this limitation, I am interested in learning ...

Karma-Jasmine encountered an issue with a TypeError, stating that it cannot read properties of undefined while attempting to read 'get'

I've been struggling to write a unit test for my Angular component due to an error I can't seem to resolve. Despite my efforts to find a solution on Stack Overflow and various online documentation, I haven't had any luck yet. Here are some o ...

Combining different types and "currying" or partial application APIs in a unique way

Here is an interface that I am working with: interface IFactory<T> extends Function { (...args: any[]): (((...args: any[]) => T)|T); } After implementing the following code snippet, an error occurred: ts] Type '((...args: any[]) => ...

Injecting background images with CSS in Vue3

After exploring answers to my previous inquiry, I am now seeking guidance on how to inject both a variable and a URL image into my scoped CSS. Despite trying various combinations, none seem to be effective: <template> <header class=< ...

Is there a preferred method for correctly nesting components?

It may seem like a simple question, but I couldn't find the answer in the documentation or code examples. Consider this example: import { FlowIdentification } from "./flow-identification"; @customElement("bb-flow") export class R ...

Automatic verification of OTP in Ionic 3

Seeking assistance for implementing auto OTP verification in a project I am working on. After the user enters their phone number, I have come across some examples for Ionic 1 with Angular 1 online. However, I am specifically looking for examples using Io ...

Creating a service instance within the constructor in Angular 2

I'm new to Angular 2 and Typescript and I'm trying to wrap my head around DI. One thing that has been tripping me up is the way variables referring to a service are typed into the constructor in all the code examples I've come across. Why is ...

What sets React.HTMLProps<HTMLDivElement> apart from React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>?

Exploring the differences between interfaces and types in React: interface Properties1 extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> {} interface Properties2 extends React.HTMLProps<HTMLDivElement> ...

Unable to locate the <router-view> component within VueRouter

I recently completed a project using Vue.js 3.2.13 and Vue-Router 4.0.14. Despite my efforts to ensure everything was set up correctly, I encountered an error in the browser that said "[Vue warn]: Failed to resolve component: router-view". The specific lin ...

Obtain the content of a clicked item on the following page using NextJs

I am currently working on a nextjs app that displays a list of 10 movies on the homepage, each with a Button / Link that leads to a specific page for that movie where all its content is shown. Initially, I tried adding the movie id to the Link like this: ...

Transform leaflet marker plugin into Typescript format

I recently discovered a leaflet extension that conceals map markers if they fall outside the boundaries of the current view map. import L from 'leaflet'; L.Marker.MyMarker= L.Marker.extend({}).addInitHook(function (this: ILazyMarker) { this ...

Adjusting the array of buttons with various functions within the Header component

I am looking to create a customizable Header component with different sets of buttons that trigger various functions. For example, on the home page, the buttons could be "visit about page" and "trigger vuex action A", while on the about page they could be ...

Converting a JavaScript function to work in TypeScript: a step-by-step guide

When writing it like this, using the this keyword is not possible. LoadDrawing(drawing_name) { this.glg.LoadWidgetFromURL(drawing_name, null, this.LoadCB,drawing_name); } LoadCB(drawing, drawing_name) { if (drawing == null) { return; ...

Passing variable values in Angular 6

Is there a way to transfer the value of a variable from Component1 to a variable in Component2 without using any template binding? I have two components, Header and Footer. In the Header component, there is a boolean variable called test that I need to pa ...

Invoke a function within an Angular component that is passed in as a parameter

Is it possible to invoke a function using a string in JavaScript? I have a scenario where I receive a string as the function name, and I need to call and run that function. However, my current code is not working as expected. Below is the code snippet I ...

Exploring the visitor design pattern with numerical enumerated types

I am exploring the use of the visitor pattern to ensure comprehensive handling when adding a new enum value. Here is an example of an enum: export enum ActionItemTypeEnum { AccountManager = 0, Affiliate = 4, } Currently, I have implemented the fol ...

Executing a component method from a service class in Angular

When trying to call a component method from a service class, an error is encountered: 'ERROR TypeError: Cannot read property 'test' of undefined'. Although similar issues have been researched, the explanations mostly focus on component- ...

How does the highlighting feature in Fuse.js includeMatches function operate?

Currently, in my Next JS/Typescript web application, I am using the Fuse.js library. However, I am still uncertain about how the includeMatches option functions for highlighting purposes. Whenever I enable this option, I receive a matches object within the ...

Exploring end-to-end testing with NestJS and Guards

I'm trying to test an endpoint called /users using nestjs, but I encountered some errors. I'm unsure how to fix the issues and make the test pass with a guard. First Issue Nest is unable to resolve dependencies of the UserModel (?). Please en ...