typescript - Vuex Typescript 我收到错误 "Member ' someMutation' implicitly has an 'any' type."in the Component.ts file

标签 typescript vue.js vuejs2 vuex

我收到错误:

"Member 'someMutation' implicitly has an 'any' type.".

此错误出现在我的 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;@Mutation public someMutation(s: string): void;,但没有成功。

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

最佳答案

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

(name: string) => void

由于该属性由vuex-class 自动初始化,我们可以使用definite assignment assertion以避免“无初始化程序”错误。

!: (name: string) => void
^

最后的结果是:

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

关于typescript - Vuex Typescript 我收到错误 "Member ' someMutation' implicitly has an 'any' type."in the Component.ts file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55201486/

相关文章:

javascript - TypeError : state. categoriesState.push 不是函数VUEX

javascript - 有条件地加载 vue-router

javascript - 在 typeorm 中使用 select 插入

javascript - 如何生成 Mobx.autorun 以防止在类构造函数中触发?

vue.js - vuejs : Component for <tr>, 怎么实现?

javascript - 对 v-for 中的特定元素使用 v-if

typescript 编译文件找不到模块

javascript - 获取包含无效 css 的样式属性的完整值

javascript - 输入字段的动态数量

vue.js - 从 Highchart 事件内部更改 VueJS 组件数据值