TypeScript单文件多枚举通过单一export语句统一导出的实现方法
TypeScript 单文件聚合多枚举、统一入口导出实现方案
核心实现逻辑
将枚举定义为模块私有成员(不添加export修饰符,外部文件无法直接访问),仅通过唯一的导出语句对外暴露聚合后的枚举入口,既满足单导出要求,也能实现Enums.xxx的访问形式,同时完全保留TS类型校验能力。
具体实现代码
新建统一的枚举存储文件(例如enums.ts),写入以下代码:
// 以下两个枚举无export修饰,属于当前文件私有,外部无法直接导入访问 enum Actions { Delete = "Delete", Update = "Update" } enum Groups { Lead = "Lead", Permanent = "Permanent" } // 整个文件仅保留这一条导出语句,对外暴露统一访问入口 export namespace Enums { export { Actions, Groups } }
外部文件使用方式
在其他业务文件中导入统一入口后,即可按预期形式访问枚举:
import { Enums } from './enums'; // 访问枚举值 const currentAction = Enums.Actions.Update; const userGroup = Enums.Groups.Permanent; // 用于类型标注 function execAction(action: Enums.Actions) { // 业务逻辑实现 }
方案符合要求的验证点
- 单文件仅存在1条
export语句,满足导出数量要求 - 内部定义的
Actions、Groups枚举无导出修饰,外部无法通过直接import的方式拿到单个枚举,符合访问限制要求 - 访问形式完全匹配
Enums.Actions、Enums.Groups的预期 - TS类型提示、枚举值自动补全、类型校验能力完全保留,无类型丢失问题
内容的提问来源于stack exchange,提问作者KushalSeth
相关产品推荐
相关产品推荐

