При использовании Vuex ранее я мог использовать значения enum в качестве имен функций для своих действий и мутаций, например так:
// ./store/modules/test/actions.ts
import { Actions } from '@/store';
import { ActionTree } from 'vuex';
export default ActionTree<any,any>{
[Actions.TEST_ACTION](){
console.log('in action');
}
}
Но при попытке сделать это в классе:
// ./store/modules/test.ts
import { Actions } from '@/store';
import { Action, Module, VuexModule } from 'vuex-module-decorators';
@Module
export default class Test extends VuexModule {
@Action
public async [Actions.TEST_ACTION](): Promise<void> {
console.log('in action');
}
}
Я получаю ошибку:
Cannot read property 'TEST_ACTION' of undefined
at eval (test.ts?f2af:4)
// Same line as 'export default class Test extends VuexModule'
В моем редакторе (vscode) нет ошибок, ничто не пытается вызвать эту функцию (нет вызовов для отправки), и перечисление Actions
экспортируется:
export enum Actions {
TEST_ACTION = 'testAction'
}
Если я вместо этого сделаю следующее, я больше не получу сообщение об ошибке:
@Action
public async testAction(): Promise<void> {
console.log('in action');
}
Обновление: если перечисление находится в том же файле, нетошибки:
// ./store/modules/test.ts
import { Action, Module, VuexModule } from 'vuex-module-decorators';
export enum Actions {
TEST_ACTION = 'testAction'
}
@Module
export default class Test extends VuexModule {
@Action
public async [Actions.TEST_ACTION](): Promise<void> {
console.log('in action');
}
}
Хотя это будет работать, это не идеально.Может ли это быть проблемой веб-пакета?