【问题标题】:Does TypeScript support export default Enum?TypeScript 是否支持导出默认枚举?
【发布时间】:2023-02-07 18:26:55
【问题描述】:

我有一个枚举对象,我想像这样在顶层设置导出默认值:

export default enum Hashes{

FOO = 'foo',
BAR = 'bar',
}

我收到此错误:

模块解析失败:意外标记 (1:15) 文件已处理 这些装载机:[02:54] MABROUK,Sahnoun(外部 - 项目)

  • ./node_modules/@angular-devkit/build-angular/src/babel/webpack-loader.js
  • ./node_modules/@ngtools/webpack/src/ivy/index.js

我试过这种方式:

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

并且它似乎只有在我将 Hashes 作为别名导入到我的所有组件中时才有效:

import {Hashes} from ... 这对我的项目来说是一个巨大的改变!

任何解决方案?

【问题讨论】:

  • export default ... 仅适用于表达看起来 enum X { ... } 不是一个表达式。

标签: javascript angular typescript ecmascript-6 export


【解决方案1】:

这就是 ES6 的工作原理。

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

export default Hashes;

将其导出为常量?关于默认导出,每个模块只有一个默认导出。默认导出可以是函数、类、对象或任何其他内容。该值将被视为“主要”导出值,因为它最容易导入。

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

【讨论】:

    【解决方案2】:

    export default expects an expression/function/class after it,你可以在这里阅读更多Export MDN

    这不是由于 TS,这是由于您的陈述有误。您可以先简单地定义您的枚举,然后将其默认导出。

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

    【讨论】:

      猜你喜欢
      • 2012-12-03
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      相关资源
      最近更新 更多