typescript - 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
。
解决方案
根据 的来源someMutation
,该方法接受一个string
名为 的参数name
,并返回void
,其类型如下:
(name: string) => void
由于属性由 自动初始化vuex-class
,我们可以使用明确的赋值断言来避免“无初始化”错误。
!: (name: string) => void
^
最终结果是:
@Mutation someMutation!: (name: string) => void
推荐阅读
- php - 是否可以通过循环为电子邮件模板创建 html 元素?
- c# - 如何允许创建一个允许cs文件运行而不重建项目的项目?
- javascript - 根据特定值对对象进行排序(降序)
- pickle - 是否有工具或方法来识别 joblib 对象是小端还是大端?
- serilog - Serilog 没有记录对任何 API 或控制器的请求
- c++ - C ++在其他类中使用类失败
- java - 可以在 java 中使用 String 数据类型作为时间戳吗?
- manjaro - 在 manjaro install 中发现了一个奇怪的文件夹
- r - dygraphs shading R:基于Y值的X轴着色(垂直着色)
- python - __init__() 得到了一个意外的关键字参数 'max_length' django charfield