我收到错误:
"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
的来源,该方法接受一个名为name
的string
参数,并返回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/