举个栗子,我们经常需要用到日期工具,比如我们这里就用 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 {}
即可。
完了~
文章评论