vue3 TypeScript 组件无法在全局混合中调用方法



我已经为此挣扎了大约一周,所以如果有人知道,如果你能帮忙,我将不胜感激。

作为一个新项目,我一直在将基于vue2的代码转换为vue3。我不使用coposition api,而是将其作为一种基于对象的组件方式使用。

由于用typscript编写的外部模块也被导入和使用,因此该组件被defineComponent((封装。

一切都很好,但问题在于全球混合。正如vue官方文档中所描述的,用*.js编写的mixin被注册为app.mixin((.的全局mixin

// mixin.js 
export default {
methods: {
registerBackButtonCallback() {}
}
}

如果我在组件文件中调用这个.registerBackButtonCallback((

"类型"never"没有呼叫签名">

错误,编译失败。但是当我将其用作本地mixin时,调用registerBackButtonCallback((效果很好。

只有当<script lang=";ts">已设置。当";严格的";或";noImplicitThis";"选项";tsconfig.json";设置为false。

由于以上原因,我认为这个错误一定和打字有关。我认为进行类型论证会很好,所以在src/shims-vue.d.ts中,就像下面的那个一样,我尝试添加它,但我仍然得到了错误。

declare module 'vue/types/vue' {
interface Vue {
registerBackButtonCallback: () => void
}
}

有人试过用脚本lang="调用全局mixin的mehtod吗;ts";在vue3组件中?

非常感谢你的建议。

自定义类型Vue是Vue2的一种实践。在Vue3中,自定义属性在"@vue/runtime core"的ComponentCustomProperties中定义

最新更新