修身养性,知行合一

  • 首页
  • 爱码
    • 系统
    • 数据库
    • JavaScript
    • CSharp
    • Python
  • 生活
    • 文化
    • 美食
  • 杂谈
  • 关于
修身养性,知行合一
码字,杂谈
  1. 首页
  2. 爱码
  3. 前端
  4. JavaScript
  5. Vue
  6. 正文

vue 给全局自定义属性添加 ts 类型声明

2024年4月3日 1704点热度 0人点赞 0条评论

举个栗子,我们经常需要用到日期工具,比如我们这里就用 dayjs。为了方便,我们可以将其挂在全局:

// vue3
app.config.globalProperties.$dayjs = dayjs;

// vue2
Vue.prototype.$dayjs = dayjs;

这样,我们就可以使用它了。但是在 ts 中,我们使用 $dayjs 是会报类型错误的,这是因为我们还没有给它声明类型。

  • 在 vue2 中,我们可以:
// vue2
declare module 'vue/types/vue' {
  interface Vue {
    $dayjs: typeof import('dayjs')
  }
}
  • 在 vue3 中,这里有个误区,在一开始,我们将其放在 @vue/runtime-core 是管用的,但是最近项目好像不可以了,直接将其放在 vue 下就可以,官方文档也是这样写的,具体可以看 这里:
// vue3
declare module 'vue' { // 这里使用 vue,而不再是 @vue/runtime-core
  interface ComponentCustomProperties {
    $dayjs: typeof import('dayjs');
  }
}

这些声明文件可以放在 shims-vue.d.ts 中,如果全局报错,可以添加一个 export {} 即可。

完了~

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: TypeScript vue
最后更新:2024年4月3日

jeremyjone

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

最新 热点 随机
最新 热点 随机
node-sass 的安装 解决端口被占的问题 vue3 组件 Props 的声明方式 给 div 添加选中状态 请求的取消 rgb 颜色小数兼容问题
美化PowerShell(含WindowsTerminal和VSCode终端) 推荐一款 JS 水印工具 LINQ 语句中格式化日期 node-sass 的安装 Windows Server 配置域内机器自动登录 vue3 组件 Props 的声明方式

(っ•̀ω•́)っ✎⁾⁾ 开心每一天

COPYRIGHT © 2021 jeremyjone.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

京ICP备19012859号-1

京公网安备 11010802028585号