后来迁移到 TypeScript 时,延续了 export = echarts 这种兼容写法,而不是强行改为 export default。
ECharts 官方的定位是“命名空间式 API”,也就是说,用户习惯通过 echarts.xxx() 方式调用。
为了保持这种语义一致性,团队没有提供 default export,而是把所有 API 都挂在一个 echarts 命名空间对象下。
import * 的其他应用场景
除了 ECharts,还有一些库或工具函数常常需要使用 import *:
有些工具库导出了非常多的函数,如果不想逐个引入,可以整合为一个命名空间对象。例如:lodash-es
import * as _ from 'lodash-es';
const arr = [1, 2, 2, 3, 4];
console.log(_.uniq(arr)); // [1, 2, 3, 4]
当一个模块只导出大量的常量或枚举值时,import * 可以避免逐个列出,写法更整洁。
例如:Node.js 内置 path 模块(ESM 版本)
代码高亮:
import * as path from 'path';
console.log(path.sep); // 当前系统路径分隔符(Windows: '', Linux/Mac: '/')
console.log(path.resolve('./src'));
如何判断是否需要 import *
如果你不确定一个库该怎么导入,可以采用以下几种方式:
看文档示例

查看源码或 d.ts 文件
如果不想找文档,可以直接打开项目的依赖

找到对应的包,导出方式在index.d.ts 文件中可以看到

Trae/Cursor智能提示
并不是所有第三方库都内置Ts支持,有index.d.ts文件,这个时候你可以借助AI编译器(如Trae或Cursor)的智能提示。
以Trae的注释生成代码为例:

参考文章:原文链接