Vuex Test Utils с TypeScript: Аргумент типа 'TYPE1' 'нельзя назначить параметру типа' TYPE1 & TYPE2 & TYPE3 & TYPE4 ' - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь написать тест, используя утилиты vuex test.Я настроил тест следующим образом:

myModule.ts

export const mutations = {
  [TYPES.SET_VALUE1](state: myModuleState, payload: TYPE1) {
    //...
  },
  [TYPES.SET_VALUE2](state: myModuleState: payload: TYPE2) {
    //...
  },
  [TYPES.SET_VALUE3](state: myModuleState, payload: TYPE3) {
    //...
  },
  [TYPES.SET_VALUE4](state: myModuleState, payload: TYPE4) {
    //...
  }
};

myModule.spec.ts

import chai from 'chai';
import { expect } from 'chai';
import { mutations, myModule } from '@/store/modules/myModule';
import TYPES from '@/store/mutation-types';

const testValue:TYPE1 = {
  name: 123
};

describe('mutations', () => {
  it('TYPE1', () => {
    // mock state
    const state = {};
    // apply mutation
    mutations[TYPES.SET_VALUE1](state, testValue);
    // assert result
    expect(state).to.deep.equal(testValue);
  });
});

и когда я запускаю, я получаю следующую ошибку:

TS2345: Argument of type 'TYPE1' is not assignable to parameter of type 'TYPE1 & TYPE2 & TYPE3 & TYPE4'.
  Type 'TYPE1' is not assignable to type 'TYPE2'.

Кажется, что он ожидает, что тип аргумента будет всеми типами одновременно?Когда я меняю тип аргумента, скажем, с TYPE1 на TYPE2, ошибка меняется на Type 'TYPE2' is not assignable to type 'TYPE1'.Что я делаю не так?

Редактировать: я изменил myModule.spec.ts на myModule.spec.js и удалил набранное def из testValue.и тест проходит нормально.

...