首页 > 解决方案 > Vuex Typescript 我收到错误“成员 'someMutation' 隐含地具有 'any' 类型。” 在 Component.ts 文件中

问题描述

我收到错误消息:

“成员 'someMutation' 隐含地具有 'any' 类型。”。

此错误出现在我的 Vue 组件Component.ts文件中,用于从 Vuex 商店收到的突变。

我有以下代码Component.ts

@WithRender
@Component({
    components: { SomeChildComponent },
})
export default class Component extends Vue {
    constructor() {
        super();
        this.someFunc(this.someComponentMethod);
        // ... some logic
    }
    @Mutation public someMutation;

    private someComponentMethod(str: string) {
        this.someMutation();
    }
}

存储突变的代码:

const mutations: MutationTree<State> = {
    someMutation(state, name: string): void {
        state.prop = state.prop.filter((el: IEl): boolean => el.name !== name);
    },
};

const c = {
    state,
    getters,
    mutations,
};

const store = new Vuex.Store(c);

我尝试了一些变体,例如@Mutation public someMutation: void;or @Mutation public someMutation(s: string): void;,但没有成功。

我的目的是解决问题,而不仅仅是关闭文件中的NoImplicitAny规则tslint.json

标签: typescriptvue.jsvuejs2vuex

解决方案


根据 的来源someMutation,该方法接受一个string名为 的参数name,并返回void,其类型如下:

(name: string) => void

由于属性由 自动初始化vuex-class,我们可以使用明确的赋值断言来避免“无初始化”错误。

!: (name: string) => void
^

最终结果是:

@Mutation someMutation!: (name: string) => void

推荐阅读