Composition API插件-使用打字稿

问题描述

我目前正在使用Vue 2 composition api插件和Typescript在NuxtJs中为更大的平台构建插件。在这种情况下,我想在组件的Setup函数中的SetupContext对象上声明类型,以便可以利用打字稿和自动完成功能。

当前该插件如下所示:

declare module "vue/types/vue" {
  interface Vue {
    readonly $MessageService: IMessageService;
  }
}

declare module "vue/types/options" {
  interface Vue {
    readonly $MessageService: IMessageService;
  }
}

interface IMessageService {
  broadcastMessage: (message: Notification) => void;
  setMessageStream: (listener: Function) => void;
}

const MessageService: Plugin = (context,inject) => {
  inject(
    "MessageService",<IMessageService>reactive({
      broadcastMessage: () => {},setMessageStream: () => {},})
  );
};

但是它没有在设置功能的root对象上注册。

setup(props,{ root }) {
     root.$MessageService.broadcastMessage() 
          --------------- 
   * Is not defined on "root" * 

     return {};
  },

我似乎无法弄清楚为什么未正确注册。因为它在不为组件使用composition api插件时似乎可以正常工作。意思是,它在非合成组件中的this上可用。

感谢您的咨询。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)