vue3+ts向所有组件实例注入自定义属性之后声明 @vue/runtime-core 模块会导致 vue 方法导出错误

注入自定义属性如下

app.config.globalProperties.api = api; // 向所有组件注入 api 对象

注入之后是不能在组件中使用的,因为 ts 类型的原因,组件实例是没有 api 的声明的,所以需要额外声明

声明

// shims-vue.d.ts 中追加内容
declare module "@vue/runtime-core" {
    import type { ApiConfig } from "@/api";

    interface ComponentCustomProperties {
        api: ApiConfig;
    }
}

报错

添加如上声明之后所有对 vue 的导入语句全部报错

import { inject, ref, reactive, getCurrentInstance, onMounted } from "vue";

报错信息类似如下:TS2305: Module ‘“../../node_modules/vue/dist/vue”‘ has no exported member ‘getCurrentInstance’.

讨论数量: 4

补充

后来将声明移动到 main.ts 中就好了,之所以一开始放在 shims-vue.d.ts 是因为被网上搜到的内容误导了 但是由此也说明对这个文件的功能还需要进一步探索,希望后面有人可以解释一下这个的原理,实际上在main.ts中声明模块还是不够完美的

3年前 评论

请问如何在main.ts 声明

3年前 评论

牛逼,真的是放在 main.ts 就好了

2年前 评论

谢谢 我也是这样可以用了,放到main.ts就可以 等后续大佬知道了为什么 踢我一下

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!