问题描述
我目前正在使用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 (将#修改为@)