TypeScript Vuex插件“不兼容的类型”

时间:2018-04-12 09:57:32

标签: typescript vuex

使用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的新手。知道解决此问题的最佳方法会很棒。

1 个答案:

答案 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

希望这有帮助