Пока единственная информация, которую я нашел по теме, была статья .
Я пытаюсь реализовать магазин с 2 модулями.
export interface RootState {
/** root state props **/
}
const store: StoreOptions<RootState> = {
modules: {
foo,
bar,
},
};
export default new Vuex.Store<RootState>(store);
Тогда у меня есть оба модуля:
export interface FooState {
//(...)
}
export const foo: Module<FooState, RootState> = {
//(...)
};
export interface BarState {
//(...)
}
export const bar: Module<BarState, RootState> = {
//(...)
};
Все было в порядке, пока у меня не было одной ситуации, когда мне нужен был метод получения из модуля foo для доступа к состоянию панели:
export const getters: GetterTree<FooState, RootState> = {
getInfo: (state, {}, rootState) => number {
const value = rootState.bar.somevalue;
//(...)
},
};
У меня возникла ошибка, объясняющая, что rootState не имеет свойства bar.Поразмыслив об этом, мне удалось устранить ошибку, изменив исходный интерфейс RootState:
export interface RootState {
/** root state props **/
foo: FooState;
bar: BarState;
}
Это решило проблему и отлично подошло для intellisense IDE.
Это правильный подход?Чтобы добавить все модули в интерфейс RootState, используемый StoreOptions?
Кроме того, как представляется, отсутствует документация об этих типизированных интерфейсах (StoreOptions, Module, GetterTree и т. Д.): Достаточно ли зрел Vuex для использованияс машинописным шрифтом?
Редактировать: я забыл упомянуть: мне все еще нужно привести это. $ store при доступе к хранилищу из компонента (но можно минимизировать его с помощью vuex-class ).Кажется, есть вопрос , открытый об этом без ответов.Я полагаю, что до сих пор нет другого решения, я прав?