You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决TypeScript中‘Individual declarations in merged declaration must be all exported or all local’(TS2395)及隐式any类型错误?

解决Redux Store导入时的TypeScript错误

看起来你遇到的这两个TypeScript错误,大概率和代码重复声明或者配置变更有关,毕竟你说之前代码是正常的。咱们逐个拆解解决:

错误1:Individual declarations in merged declaration 'INITIAL_DOG_STATE' must be all exported or all local.ts(2395)

这个错误的核心是同名变量的声明混合了导出和局部作用域,TypeScript不允许这种合并声明。常见原因和解决办法:

  • 检查dog.store.ts文件里有没有重复声明INITIAL_DOG_STATE,比如不小心写了两次,一次加了export一次没加。删掉重复的,只保留带export的那一个。
  • 排查整个项目里其他文件,有没有其他地方也声明了INITIAL_DOG_STATE(不管是导出还是局部变量)。如果有,要么统一都导出,要么重命名避免冲突。
  • 如果你最近开启了TypeScript的declaration: true配置(生成.d.ts声明文件),可能是旧的编译产物残留导致冲突。清理一下项目的dist文件夹,或者用ng clean(Angular项目)清除缓存后重新编译。

错误2:Binding element 'INITIAL_DOG_STATE' implicitly has an 'any' type.

这个错误说明TypeScript无法正确推断INITIAL_DOG_STATE的类型,通常和模块解析或严格模式配置有关:

  • 先确认dog.store.ts里的INITIAL_DOG_STATE确实正确实现了IDogState接口,并且类型标注没问题(你现在的代码看起来是对的,但可以再检查一遍有没有拼写错误)。
  • 检查导入路径是否正确!如果路径写错了,TypeScript找不到对应的模块,就会默认把导入的变量推断为any。比如是不是./redux/stores/dog.store的路径层级不对?
  • 如果你最近开启了TypeScript的strict: true配置(或者升级了Angular/TypeScript版本,默认开启了严格模式),noImplicitAny规则会触发这个错误。这种情况下,确保所有导入的变量都有明确类型,你可以试试把接口单独用type导入:
    import type { IDogState } from "./redux/stores/dog.store";
    import { dogReducer, INITIAL_DOG_STATE } from "./redux/stores/dog.store";
    
  • 最后,尝试重启TypeScript语言服务(VSCode里可以按Ctrl+Shift+P,输入TypeScript: Restart TS Server),有时候缓存会导致类型推断异常。

针对配置变更的排查

既然你怀疑是TypeScript或Angular配置变更导致的,重点检查tsconfig.json的这些选项:

  • strict:是否从false改成了true,这个选项会开启一系列严格类型检查,包括noImplicitAny。
  • declaration:是否新增了declaration: true,这会生成声明文件,容易引发合并声明冲突。
  • moduleResolution:是否从node改成了其他值,Angular项目通常需要moduleResolution: node来正确解析相对路径模块。

内容的提问来源于stack exchange,提问作者Chriso Lopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 23:52:36