如果没有引用 "xxx",则无法命名 "xxxx" 的推断类型。这很可能不可移植。需要类型注释

1,232 阅读1分钟

最近在开发SpeedForm时出现一个typescript类型错误,比较冷门:

如果没有引用 "@speedform/reactive/node_modules/helux",则无法命名 "Network" 的推断类型。
这很可能不可移植。需要类型注释。ts(2742)

错误重现

使用pnpm包管理器,在开发SpeedForm时,@speedform/reactive依赖helux,然后myExample依赖@speedform/reactive

在满足以下条件时就会出现:

  • @speedform/reactivecreateStore API的存在依赖helux的类型推断,注意:是自动类型推断,并且@speedform/reactive没有导出相关推断类型。
  • myExample没有安装helux依赖

这样,当myExample在调用createStore API时进行类型推断时,由于找不到helux依赖就会出现此错误。

解决方案

@speedform/reactiveindex.ts中添加:

declare module 'helux' {}