Vue2项目配置vuex.d.ts后$store仍为Store<any>如何解决
问题原因与解决步骤
- 核心错误1:你参考的是Vue3对应Vuex4.x的类型声明方案,Vue2项目适用的声明规则完全不同。
- 核心错误2:你的声明文件未导入Vuex的
Store类型,且错误声明了Vue3专属的@vue/runtime-core模块、ComponentCustomProperties接口。
完整修复方案
1. 修正vuex.d.ts内容
import { Store } from 'vuex' // 你的全局State类型定义,也可以从其他业务ts文件导入 interface State { // 此处填写你state内各字段的实际类型 count: number userInfo: { name: string id: number } } // Vue2.6及更早版本用以下声明 declare module 'vue/types/vue' { interface Vue { $store: Store<State> } }
如果你使用的是Vue2.7版本,替换上方模块声明为以下写法:
declare module 'vue' { interface ComponentCustomProperties { $store: Store<State> } }
2. 验证tsconfig.json配置
确认tsconfig.json的include字段包含了你的声明文件路径,示例配置:
{ "include": [ "src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue" ] }
3. 验证依赖版本
确认你安装的Vuex版本为3.x(适配Vue2的正式版本),不要安装Vuex4.x版本。
4. 重启TypeScript服务
修改完成后重启IDE的TypeScript语言服务即可生效,以VSCode为例,按下Ctrl+Shift+P选择TypeScript: Restart TS Server即可。
内容的提问来源于stack exchange,提问作者Alex l.
相关产品推荐
相关产品推荐

