声明文件(Declaration File)是一种包含了 JavaScript 模块、类、函数等类型信息的特殊文件。声明文件通常以 .d.ts 作为扩展名,可以让 TypeScript 编译器正确的识别 JavaScript 代码中的类型信息,并提供相关的代码补全和类型检查。
所以,我们在代码编辑器中使用的所有类型信息和类型补全都是 TypeScript 编译器通过阅读声明文件实现的。
unplugin-vue-components 插件允许我们定义全局组件,例如 NaiveUI 库提供的所有组件,这样我们在使用这些组件的时候就不需要挨个导入了。在 VSCode 中,如果我们不显式导入这些被声明为全局组件的组件,我们仍然可以直接在 template 中使用这些组件,但是 VSCode 并不会给出任何与组件相关的类型提示,这是因为 TypeScript 编译器尚未阅读与这些全局组件相关的类型定义。换言之,如果我们显式导入这些组件,那么 TypeScript 编译器就会在我们导入组件的时候自动阅读组件的类型定义,此时就能在编辑器中直接查阅到这些组件的类型信息。
如果在没有手动导入全局组件的情况下使用组件的类型功能,需要借助于 @vue/runtime-core 这个包。
@vue/runtime-core 是 Vue 3 中的一个核心库,它包含了 Vue 3 运行时核心代码。就这里涉及到全局组件的类型注释功能而言,unplugin-vue-components 插件会 借助于@vue/runtime-core 动态生成全局组件的类型声明文件,然后传递给 TypeScript 编译器。
所以我们需要安装 @vue/runtime-core:
ni -D @vue/runtime-core
然后将其生成的声明文件传递给 TypeScript 编译器:
{
"compilerOptions": {
"types": [
"@vue/runtime-core"
]
}
评论区