使用unplugin-vue-components之后如何在ref中获取自动导入的组件类型?
vue3使用了unplugin-vue-components
引入elementplus组件后,如何在写ts的时候获取组件类型?这个文件好像只对
template
里的组件才有提示,现在我需要获取组件的方法,let treeRef = ref()
使用ref之后,treeRef.value 不提示组件内部方法,然后我手动引入了el-tree组件,写成了let treeRef = ref<intanceType<typeof Eltree>>()
之后可以有提示,但是这样做就失去了使用unplugin-vue-components
的意义,而且这样使用由于没全局导入样式,所以组件是没有样式的。
我尝试使用let treeRef = ref<GlobalComponents.ElTree>()
不行,应该有一种方法可以获取到生成的component.d.ts里 GlobalComponents声明的全局组件类型。
回复
1个回答

test
2024-07-20
新建一个文件:
import type { GlobalComponents } from 'vue'
declare global {
type ComponentInstance = {
[Property in keyof GlobalComponents]: InstanceType<GlobalComponents[Property]>
}
}
然后就可以使用:const treeRef = ref<ComponentInstance['ElTree']>()
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容