You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript是否支持export default直接导出Enum枚举?

报错原因

export default enum 属于非法语法,ECMAScript 模块规范和 TypeScript 语法都不支持在export default关键字后直接接enum/const/let这类命名声明语句,所以babel/webpack解析时会直接抛出Unexpected token错误,和loader配置本身无关。

解决方案

不需要把所有导入改成具名写法,直接拆分声明和导出步骤即可,完全兼容现有Angular构建链。

方案1:纯默认导出(适配默认导入语法)

先声明enum,再单独做默认导出,所有用import Hashes from '对应模块路径'写法的代码都能正常运行,不需要改动:

enum Hashes {
  FOO = 'foo',
  BAR = 'bar',
}

export default Hashes;

方案2:同时兼容具名导入和默认导入

如果你已经写了部分具名导入的代码,不想改动任何已有导入逻辑,可以同时保留具名导出和默认导出,两种导入方式都能正常工作,编译后不会产生重复代码:

export enum Hashes {
  FOO = 'foo',
  BAR = 'bar',
}

export default Hashes;

这种写法下,以下两种导入语法都可以正常使用:

  • 默认导入:import Hashes from '模块路径'
  • 具名导入:import { Hashes } from '模块路径'
语法注意

除了匿名函数、匿名类之外,所有带命名的声明(const/let/enum/命名function/命名class)都不能直接接在export default后面,必须先完成声明,再单独执行默认导出。

内容的提问来源于stack exchange,提问作者547n00n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 10:54:48