为什么对flatten-js默认导出ES模块解构导入报TS2614,const解构无错?
问题原因
该问题由@flatten-js/core库的类型声明导出配置不规范导致:
- 库的类型定义仅对外暴露了
default默认导出的完整命名空间对象,没有单独声明point等API的命名导出。使用import { point } from '@flatten-js/core'写法时,TS类型检查系统找不到对应point的导出声明,因此抛出不存在的错误。 - 默认导入后解构的写法完全匹配类型定义中默认导出的对象结构,所以TS可以正常识别到
point是默认导出对象上的成员,不会报错。
如果实际运行时命名导入可正常执行、仅存在类型报错,说明库的运行时代码已经完成ESM命名导出兼容,仅类型声明未同步更新,属于典型的类型定义与实际代码不匹配问题。
优化修复方案
若要优化该库的开发者体验,只需在库的类型声明文件中补充所有公开API的命名导出即可,示例格式如下:
export const point: typeof Flatten.point; export const circle: typeof Flatten.circle; // 其余公开API按相同规则补充即可
若为项目临时修复,可在自有项目中新增.d.ts声明文件,补充上述对应模块的命名导出声明即可解决类型报错。
内容的提问来源于stack exchange,提问作者J. Barca
相关产品推荐
相关产品推荐

