如何从bundle.ts文件中获取所有导入的函数名?
可行,具体实现方案如下
1. 调整bundle.ts的导出结构
原代码只是单独导入函数,需要将它们聚合为一个可枚举的结构(对象或数组)导出,这样其他脚本才能批量获取:
// bundle.ts import { addEvent } from './event/add.post'; import { removeEvent } from './event/remove.post'; import { updateEvent } from './event/update.post'; // 导出为包含所有函数的对象(保留函数名作为键) export const eventFunctions = { addEvent, removeEvent, updateEvent }; // 也可以导出为数组(无需键名时使用) // export const eventFunctions = [addEvent, removeEvent, updateEvent];
2. 在目标脚本中遍历获取
导入这个聚合结构后,直接遍历即可:
// 目标脚本文件 import { eventFunctions } from './bundle'; // 遍历对象(带函数名) for (const [funcName, func] of Object.entries(eventFunctions)) { console.log(`函数名称:${funcName}`, func); // 可在此对每个函数执行后续操作,比如注册、调用等 } // 若导出的是数组,直接遍历数组元素 // eventFunctions.forEach(func => { // console.log(func); // });
关键说明
- 无法直接遍历原始的分散导入:ES模块的导入是静态的,运行时无法自动收集所有单独导入的变量,必须显式聚合为对象或数组。
- 若需自动扫描文件导入(比如批量导入
./event/下所有符合规则的文件),可借助构建工具的动态导入能力(如Vite的import.meta.glob、Webpack的require.context),但这属于构建阶段的处理逻辑,和当前静态导入场景不同。
内容的提问来源于stack exchange,提问作者I'll-Be-Back
相关产品推荐
相关产品推荐

