Перечислите значения как имя функции класса - PullRequest
0 голосов
/ 27 сентября 2019

При использовании 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');
  }
}

Хотя это будет работать, это не идеально.Может ли это быть проблемой веб-пакета?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...