在Vite+TypeScript项目中导入组件时会报找不到模块的声明文件

在使用Vite创建Vue3项目时,遇到找不到模块"@/components/***.vue"的错误。解决方法包括在src下的vite-env.d.ts文件中添加特定代码,或者如果文件不存在,则在根目录创建env.d.ts或者vite-env.d.ts文件并追加相应代码,从而完美解决此类模块导入问题。

TypeScript 复制代码
/// <reference types="vite/client" />

declare module "*.vue" {
	import type { DefineComponent } from "vue";
	// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
	const component: DefineComponent<{}, {}, any>;
	export default component;
}
  • declare module "*.vue":

    • 这表示 TypeScript 将处理所有以 .vue 结尾的文件。
    • 这种声明告诉 TypeScript 如何处理 Vue 组件文件,确保这些文件在导入时具有适当的类型信息。
  • import type { DefineComponent } from "vue";:

    • 从 vue 包中导入 DefineComponent 类型。这是 Vue 3 的一个类型,用于定义 Vue 组件的类型。
  • const component: DefineComponent<{}, {}, any>;:

    • 声明一个名为 component 的常量,它是一个 DefineComponent 类型。
    • DefineComponent<{}, {}, any> 表示组件的类型:
      • 第一个 {} 表示组件的 props 类型。
      • 第二个 {} 表示组件的 data 类型。
      • any 表示组件的 methods 和 computed 类型。
    • 这可以适用于大多数简单的 Vue 组件,但对于更复杂的组件,可能需要更详细的类型定义。
  • export default component;:

    • 导出 component 作为默认导出。这使得 TypeScript 知道你可以从 Vue 组件文件中默认导出一个组件。

这段代码的主要作用是:

  • 类型安全:在 TypeScript 项目中,通过声明 Vue 组件模块的类型,使得在导入 Vue 组件时可以获得类型提示和类型检查。
  • 自动推断 :当你在 TypeScript 中使用 .vue 文件时,TypeScript 会自动知道这些文件是 Vue 组件,并应用适当的类型定义。
相关推荐
云舜言传22 分钟前
Bloom 手势演示操作 · 录屏指南
javascript·深度学习·机器学习
行者全栈架构师3 小时前
我让 AI 独立开发了一款游戏:零依赖、188 个测试全绿、工期压到四分之一
typescript·canvas·vibecoding
Highcharts.js3 小时前
BI可视化图表“维护难”问题的解决方案
开发语言·前端·javascript·编辑器·ecmascript·bi·highcharts
Java后端的Ai之路4 小时前
前端技术Vue-13-安装webpack与vuejs
前端·vue.js·webpack
倚窗听花_4 小时前
IIS部署前端Vue项目
前端·javascript·vue.js
yixun_gdas4 小时前
政企网站错敏巡查:错敏都藏在哪些位置?
开发语言·前端·javascript·内容运营
Eyfcom4 小时前
〖深度〗鸿蒙 ArkTS 移动应用开发经验:从 TypeScript 心智模型到声明式运行时的六层认知重构
typescript·移动开发·harmonyos·arkts
小羊没烦恼!4 小时前
.NET 11 Runtime Async 详解
java·运维·开发语言·javascript·python
飞飞鱼在摸鱼5 小时前
前端转Agent开发 | JavaScript 从 0 到 1 完全指南
前端·javascript
Suprman5 小时前
从 B/S 到 Electron:平面排版套料系统桌面版开发实战
javascript·平面·electron·排序算法