执行ng build遇TS2709错误:无法将OrderedMap命名空间用作类型
解决TS2709: Cannot use namespace 'OrderedMap' as a type错误
错误根源
你用npm install --force强制安装依赖,导致@types/prosemirror-model、@types/prosemirror-schema-list这类包和它们依赖的ordered-map类型定义版本不兼容。新版ordered-map可能把OrderedMap定义成了namespace,而旧版prosemirror类型包还在把它当作普通type来引用,直接触发TS类型检查错误。
修复方案
彻底清理后重新安装依赖
先删掉混乱的依赖文件,避免强制安装留下的版本冲突:rm -rf node_modules package-lock.json npm install除非你明确知道依赖冲突不影响核心功能,否则别用
--force,这是引发这类问题的主要原因。锁定兼容的依赖版本
如果重新安装还是报错,手动在package.json里指定经过验证的兼容版本:"devDependencies": { "@types/prosemirror-model": "^1.16.2", "@types/prosemirror-schema-list": "^1.1.4", "ordered-map": "^2.1.1" }保存后重新执行
npm install即可。检查并调整TypeScript版本
过旧或过新的TS版本也可能导致类型解析异常,建议把TS版本锁定在^4.5.0到^5.0.0之间,比如:npm install typescript@~4.9.0 --save-dev可以用
npm ls typescript查看当前版本是否在这个区间。应急临时补丁(不推荐长期用)
要是暂时没法调整版本,可在项目根目录创建typings/ordered-map.d.ts文件,手动修正类型定义:declare module 'ordered-map' { export class OrderedMap<K, V> { get(key: K): V | undefined; set(key: K, value: V): this; forEach(callback: (value: V, key: K) => void): void; // 可根据需要补充其他方法 } export default OrderedMap; }然后在
tsconfig.json的include数组里添加"./typings/**/*.d.ts",让TS识别这个修正后的类型。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

