Vite + Vue3 + ts项目问题记录

4,912 阅读1分钟

1. ts 提示.vue文件类型相应的类型申明

使用 Vite 初始化项目后,在vscode中打开 main.ts文件,会出现:

找不到模块“./App.vue”或其相应的类型声明。ts(2307)

网上找了一下,大致解决方案都是感觉都是针对 Vue2 场景的:

declare module '*.vue' {
    import Vue from 'vue'; // vue3 默认不导出 Vue 这个实例了
    export default Vue;
}

参照这个思路,找不到.vue文件的类型申明,可以在随意一个 d.ts 文件中定义一个.vue的文件类型申明就行,主要问题是需要导出什么类型? 简单的思路是:看.vue文件在什么地方用的

main.ts中导入的 App 是用于 createApp 函数,从 App.vue 导入的是createApp函数的第一个参数,故其App的类型就应该是createApp函数的第一个参数的类型: 通过 vscode 可以很容易的定位(command + 点击createApp 进入其类型申明文件)到其createApp函数第一个参数类型是 Component,所以随便找一个地方,正好项目有个 vue-app-env.d.ts 类型申明文件,故里面添加以下代码:

declare module '*.vue' {
  import { Component } from 'vue'
  const mod: Component
  export default mod
}

这样就解决了Vue文件类型文件找不到的问题。