遇到“The type ... is not exported from this module”警告,求含义及触发原因
The type ... is not exported from this module 警告说明及排查方案 警告实际含义
该警告属于模块化开发环境下的类型校验类提示,仅作用于静态类型检查阶段,不会影响实际编译后代码的运行逻辑,因此会出现程序正常运行但控制台弹出警告的情况。
常见触发原因
- 循环类型引用:两个互相调用的类所在文件存在交叉导入的情况,静态类型检查阶段无法正确识别导出的类型节点,运行时代码因为是动态执行不会触发异常
- 导入导出语法不匹配:导出内容同时包含值与类型,但导入时使用了仅类型导入语法
import type,或者反过来,仅导出类型的内容被当作普通值导入 - 路径映射配置异常:使用tsconfig路径别名时,别名对应的实际文件路径存在偏差,类型解析阶段定位到了错误的文件,无法识别对应类型导出
- 类型服务缓存异常:本地开发环境的静态类型检查服务缓存未同步最新的代码变更,残留的旧缓存导致导出识别错误
排查方案
- 校验导入导出关系:排查两个类所在文件的导入逻辑,确认是否存在循环导入,存在的话将公共类型抽离到独立的第三方文件打破循环即可
- 统一导入语法:如果导入的类需要同时作为值和类型使用,直接使用普通导入语法
import { 类名 } from '文件路径';如果仅引用类型,统一使用import type语法,避免两种导入语法混用 - 核对路径配置:使用了路径别名的场景可以先替换为相对路径验证警告是否消失,确认是别名问题后调整tsconfig.json中的paths配置即可
- 重置类型服务缓存:VSCode开发场景可通过快捷键
Ctrl+Shift+P(Mac系统为Cmd+Shift+P)唤起命令面板,执行TypeScript: Restart TS Server命令重置类型服务,缓存类问题可直接修复
内容的提问来源于stack exchange,提问作者Kiroho
相关产品推荐
相关产品推荐

