使用TypeScript为vuex商店创建vuex插件时遇到问题。该插件使用更高阶函数来获取参数,如下所示:
Plugin.ts
export const ParamsPlugin =
() => {
(store: Store<RootState>) => {
console.log("ParamsPlugin");
}
}
Index.ts
const store :StoreOptions<RootState> = {
state: <RootState> {
...
},
mutations: {
...
},
modules: {
...
},
plugins: [ ParamsPlugin() ]
}
Typescript错误:
属性“插件”类型不兼容。类型'void []'不是 可分配给'Plugin [] |类型未定义”。类型'void []'不是 可分配给'Plugin []'类型。类型'void'不能分配给类型 '插件'。
我意识到这是一个TypeScript问题并且是TypeScript的新手。知道解决此问题的最佳方法会很棒。
答案 0 :(得分:0)
嗯,您的ParamsPlugin
是一个不返回任何内容的函数(() => void
),因此,当您执行ParamsPlugin()
时,您基本上拥有void
。 TypeScript期望plugins
数组具有Plugin
类型的对象,而不是void
。
虽然我不知道Plugin
是什么,但如果删除括号可能会有效:
export const ParamsPlugin =
() => (store: Store<RootState>) => {
console.log("ParamsPlugin");
}
使用箭头功能时,如果使用括号,则必须使用return
返回某些内容。只有在=>
放置表达式之后代替代码块时,才会隐式返回。
现在,ParamsPlugin()
返回(Store<RootState>) => void
而非void
。
希望这有帮助