
- 发布:2025-05-15 10:40
- 更新:2025-05-15 17:11
- 阅读:71
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 10
HBuilderX类型: 正式
HBuilderX版本号: 4.65
手机系统: 全部
手机厂商: 华为
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
测试过的手机:
操作步骤:
.
.
预期结果:
.
.
实际结果:
.
.
bug描述:
vue3 + ts
main.js中挂载全局方法
使用时在proxy中ts无法识别挂载的方法并且爆红
//main.js
...
import {Sugar} from '@/common/sugar.ts';
...
export function createApp() {
const app = createSSRApp(App)
// 全局挂载
app.config.globalProperties.$Sugar = Sugar
install(app)
return {
app,
}
}
//pages/index.vue
<script setup lang="ts">
import { ref, Ref, computed, getCurrentInstance } from 'vue';
const { proxy } = getCurrentInstance();
proxy.$Sugar.xxx()
</script>
**
此时 $Sugar 没有代码提示,并且会爆红
但是
当你声明了类型文件时,比如
**
//shims-vue.d.ts
import { ComponentCustomProperties } from '@vue/runtime-core';
declare module 'vue' {
interface ComponentCustomProperties {
$Sugar: {
xxx: (text: string) => void;
};
}
}
export default ComponentCustomProperties;
当编译器打开这个文件时候,有代码提示不报错, 关闭这个文件就没有提示并且报错

希灵帝国审查官 (作者)
根据文档重新改了。
下面这个Myglobal 是全局声明
$Sugar 还是无法访问
@DCloud_UNI_JBB
import { ComponentCustomProperties } from 'vue';
declare global {
type Myglobal = string;
}
declare module 'vue' {
interface ComponentCustomProperties {
$Sugar: {
xxx: (text: string) => void;
};
}
}
export {};

vue3官方文档中有写,全局属性或者方法要在 类型文件 中声明,参考文档链接 https://cn.vuejs.org/guide/typescript/options-api.html#augmenting-global-properties
DCloud_UNI_JBB
已经反馈给hx的同事了
2025-05-15 17:13