Плагин Vuex + TypeScript.Ошибка: неправильное состояние в магазине. Подписаться - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь использовать 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;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...