希灵帝国审查官
希灵帝国审查官
  • 发布:2025-05-15 10:40
  • 更新:2025-05-15 17:11
  • 阅读:71

【报Bug】vue3 ts 挂载全局方法,在proxy中ts无法识别挂载的方法并且爆红

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

HBuilderX类型: 正式

HBuilderX版本号: 4.65

手机系统: 全部

手机厂商: 华为

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

mi15

操作步骤:

.

预期结果:

.

实际结果:

.

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;  

当编译器打开这个文件时候,有代码提示不报错, 关闭这个文件就没有提示并且报错

2025-05-15 10:40 负责人:无 分享
已邀请:
希灵帝国审查官

希灵帝国审查官 (作者)

根据文档重新改了。
下面这个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 {};  
DCloud_UNI_JBB

DCloud_UNI_JBB

希灵帝国审查官

希灵帝国审查官 (作者)

@DCloud_UNI_JBB

  • 恭喜n发财

    当前项目,4.65直接标准基座运行到红米手机 没有问题哦,loading出来了

    2025-05-15 17:37

  • 恭喜n发财

    你是加了语法提示吗,我没有语法提示

    2025-05-15 17:38

要回复问题请先登录注册