Getting started (Nuxt)
Vanilla, strongly-typed store accessor.
Install module
- 
Install Nuxt module: yarn add nuxt-typed-vuexnpm install nuxt-typed-vuex --saveThis will also installtyped-vuexin your project, which is where the store accessor lives. All the helper functions are imported fromtyped-vuex.
- 
Add module to your nuxt.config:buildModules: [ 'nuxt-typed-vuex', ],buildModulesrequire Nuxt 2.10+. If you are using an older version, addnuxt-typed-vuextomodulesinstead.
Add type definitions
The module will inject a store accessor throughout your project ($accessor). It is not typed by default, so you will need to add types.
Defining the accessor type
In your root store module, add the following code:
store/index.ts
import { getAccessorType } from 'typed-vuex'
// Import all your submodules
import * as submodule from '~/store/submodule'
// Keep your existing vanilla Vuex code for state, getters, mutations, actions, plugins, etc.
// ...
// This compiles to nothing and only serves to return the correct type of the accessor
export const accessorType = getAccessorType({
  state,
  getters,
  mutations,
  actions,
  modules: {
    // The key (submodule) needs to match the Nuxt namespace (e.g. ~/store/submodule.ts)
    submodule,
  },
})
This may look different if you split your modules into separate files for 
state, actions, mutations and getters.Creating type definitions
Add the following type definitions to your project:
index.d.ts
import { accessorType } from '~/store'
declare module 'vue/types/vue' {
  interface Vue {
    $accessor: typeof accessorType
  }
}
declare module '@nuxt/types' {
  interface NuxtAppOptions {
    $accessor: typeof accessorType
  }
  
  interface Context {
    $accessor: typeof accessorType,
  }
}