如何定义工具模块,让智能提示支持命名空间式自动导入?
解决方案
你可以通过将所有工具成员封装为一个对象并默认导出的方式,既保留命名空间式的调用习惯,又让IDE自动完成导入提示。具体实现如下:
修改Utilities.ts的导出定义
// Utilities.ts // 1. 定义所有常量与函数 const appDateFormat = 'YYYY-MM-DD'; function isNullOrWhitespace(str: string): boolean { return !str || str.trim().length === 0; } function formatDate(date: Date): string { // 你的日期格式化逻辑 return new Intl.DateTimeFormat('zh-CN').format(date); } // 2. 将所有成员整合到一个对象中 const Utilities = { appDateFormat, isNullOrWhitespace, formatDate }; // 3. 默认导出该对象 export default Utilities; // (可选)若需支持单独导入某个成员,可同时保留命名导出 export { appDateFormat, isNullOrWhitespace, formatDate };
使用方式
现在你可以通过import Utilities from './Utilities'导入,调用方式和之前的命名空间式完全一致:
// 其他业务文件中 import Utilities from './Utilities'; console.log(Utilities.appDateFormat); console.log(Utilities.isNullOrWhitespace(' '));
此时WebStorm或VS Code会在你输入Utilities.时自动提示添加这个默认导入,完美匹配你的需求。
若你仍想保留import * as Utilities的写法,上述代码也支持,但IDE依然不会自动提示这类导入——不过默认导出的方式已经能满足「命名空间式调用+自动导入提示」的核心诉求。
内容的提问来源于stack exchange,提问作者Francesco Bonizzi
相关产品推荐
相关产品推荐

