后來遷移到 TypeScript 時,延續(xù)了 export = echarts 這種兼容寫法,而不是強行改為 export default。
ECharts 官方的定位是“命名空間式 API”,也就是說,用戶習(xí)慣通過 echarts.xxx() 方式調(diào)用。
為了保持這種語義一致性,團隊沒有提供 default export,而是把所有 API 都掛在一個 echarts 命名空間對象下。
import * 的其他應(yīng)用場景
除了 ECharts,還有一些庫或工具函數(shù)常常需要使用 import *:
有些工具庫導(dǎo)出了非常多的函數(shù),如果不想逐個引入,可以整合為一個命名空間對象。例如:lodash-es
import * as _ from 'lodash-es';
const arr = [1, 2, 2, 3, 4];
console.log(_.uniq(arr)); // [1, 2, 3, 4]
當(dāng)一個模塊只導(dǎo)出大量的常量或枚舉值時,import * 可以避免逐個列出,寫法更整潔。
例如:Node.js 內(nèi)置 path 模塊(ESM 版本)
代碼高亮:
import * as path from 'path';
console.log(path.sep); // 當(dāng)前系統(tǒng)路徑分隔符(Windows: '', Linux/Mac: '/')
console.log(path.resolve('./src'));
如何判斷是否需要 import *
如果你不確定一個庫該怎么導(dǎo)入,可以采用以下幾種方式:
看文檔示例

查看源碼或 d.ts 文件
如果不想找文檔,可以直接打開項目的依賴

找到對應(yīng)的包,導(dǎo)出方式在index.d.ts 文件中可以看到

Trae/Cursor智能提示
并不是所有第三方庫都內(nèi)置Ts支持,有index.d.ts文件,這個時候你可以借助AI編譯器(如Trae或Cursor)的智能提示。
以Trae的注釋生成代碼為例:

參考文章:原文鏈接?