Nuxt Typed Vuex is made up of two packages:

  1. typed-vuex - a typed store accessor with helper functions, with no Nuxt dependencies
  2. nuxt-typed-vuex - a Nuxt module that auto-injects this accessor throughout your project

Why another package?

Typing vanilla Vuex is complicated. Many people choose a class-based approach with Typescript decorators. However, this can cause issues, including:

  • incompatibilities with Nuxt
  • not being able to access this.$axios or the app/store instance from within actions
  • too much boilerplate for accessors (such as initialising them in every component that uses them)
  • slower performance

There are not many alternatives, and although Vuex provides limited type definitions for the store itself, it's complicated to access it in a type-safe way.

nuxt-typed-vuex was developed to address this problem, allowing you to write your store using vanilla Vuex code, and access it using a high-performance, strongly-typed accessor.

Image showing autocomplete on this.$accessor

Image showing autocomplete on commit within store


If you would prefer a class-based approach, good options include vuex-module-decorators and vuex-class-component.