Я пытаюсь использовать Vuex + TypeScript и написал простой плагин Vuex:
const cartPlugin: Plugin<RootState> = (store) => {
store.subscribe((mutation, state) => {
if (/^cart\/.+$/.test(mutation.type)) {
storage.set('cart', state.cart.cart);
}
});
};
И ошибка возврата TypeScript: 13:33 Property 'cart' does not exist on type 'RootState'.
:
11 | store.subscribe((mutation, state) => {
12 | if (/^cart\/.+$/.test(mutation.type)) {
> 13 | storage.set('cart', state.cart.cart);
| ^
14 | }
15 | });
16 | };
Но на самом деле у него есть свойство cart (этокод работает, если использовать JS вместо TS):
const store: StoreOptions<RootState> = {
modules: {
catalog,
cart,
},
strict: true,
plugins: [cartPlugin],
};
и модуль cart
имеет свойство cart
:
export const state = (): CartState => {
const cart = storage.get('cart') || [];
return {
cart,
};
};
Полный код
======== ОБНОВЛЕНИЕ ========
Я добавил описание RootState, и оно работает, но выглядит как временное решение.Или нет, кто знает?:)
import { CartState } from '@/store/cart/types';
export interface RootState {
cart: CartState;
};