Инициализация магазина выполняется следующим образом:
/* Logic */
import Vue from 'vue'
import Vuex, { StoreOptions } from 'vuex'
Vue.use(Vuex)
const DataManager = new UserDataManager()
type RootStateType = {
version: string
}
const store: StoreOptions<RootStateType> = {
// @ts-ignore
state: {
version: '1.0.0'
},
modules: {...},
plugins: [DataManager.init()]
}
export default new Vuex.Store<RootStateType>(store)
... в то время как плагин:
export class UserDataManager {
... logic
public init () {
return (store: <TYPE?>) => {
store.watch(
(state: RootStateType) => {
return [state.user.authentication.id]
},
(watched: string[]) => {
const userID = watched[0]
... logic
}
)
}
}
}
Я немного озадачен, если какой-то правильный тип может быть прошло здесь? Я пытался передать его:
type storeType = StoreOptions<RootStateType>
...
return (store: storeType) => {
...
, но он возвращает: TS2339: Property 'watch' does not exist on type 'StoreOptions<RootStateType>'
Я буду очень признателен, если кто-нибудь поделится некоторыми идеями по этой теме c: -)