新创建的vue3脚手架,main.js 中app.vue引用报红,点开提示:
找不到模块“./App.vue”或其相应的类型声明。ts(2307)
后来查了一下说,TypeScript编译器不支持处理 .vue
结尾的文件,需要我们自己去声明一下,就是在vite-env.d.ts文件中加入这一段代码:
declare module "*.vue" {
import type { DefineComponent } from "vue";
const vueComponent: DefineComponent<{}, {}, any>;
export default vueComponent;
}
主要是告诉 TypeScript:当你导入一个以 .vue
结尾的文件时,它实际上是一个 Vue 组件,具体类型为 DefineComponent<{}, {}, any>
DefineComponent
是 Vue 3 中的类型,用于定义一个 Vue 组件。
<{}, {}, any>
是一个泛型,用于定义组件的 props、data 和 methods 的类型。在这个例子中,它被简化为一个空对象{}
,表示该组件不接受任何 props、data 和 methods。
最后,通过 export default vueComponent;
将定义的 Vue 组件导出,以便在其他文件中可以使用 import
语句导入该组件。
加上后就能不会报红了