代码之家  ›  专栏  ›  技术社区  ›  alphadogg

从数组导出常量

  •  0
  • alphadogg  · 技术社区  · 7 年前

    我在一个文件中有一组导出的常量。以下是摘录:

    ...
    export const COUNTER_INCREMENT_REQUESTED = 'COUNTER_INCREMENT_REQUESTED';
    export const COUNTER_INCREMENT_REQUESTED_ASYNC = 'COUNTER_INCREMENT_REQUESTED_ASYNC';
    export const COUNTER_DECREMENT_REQUESTED = 'COUNTER_DECREMENT_REQUESTED';
    export const COUNTER_DECREMENT_REQUESTED_ASYNC = 'COUNTER_DECREMENT_REQUESTED_ASYNC';
    ...
    

    有没有办法创建一个数组并在其中循环,导出每个值?

    const events = [
      ...
      'COUNTER_INCREMENT_REQUESTED',
      'COUNTER_INCREMENT_REQUESTED_ASYNC',
      'COUNTER_DECREMENT_REQUESTED',
      'COUNTER_DECREMENT_REQUESTED_ASYNC',
      ...
    ]
    
    for(event of events) {
      export ...
    }
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Jiby Jose    7 年前

    不,这是不可能的。

    ES模块系统的一个显著特点是可以对模块结构进行静态分析。这基本上可以防止按您的意愿以编程方式导出内容,因为这样会破坏静态分析能力。

        2
  •  1
  •   alphadogg    7 年前

    我确实通过将常量放入它自己的文件/模块中,然后将它们导入到模块中并在那里循环来管理这个变量。

    常量。js公司

    export const COUNTER_INCREMENT_REQUESTED = 'COUNTER_INCREMENT_REQUESTED';
    export const COUNTER_INCREMENT_REQUESTED_ASYNC = 'COUNTER_INCREMENT_REQUESTED_ASYNC';
    export const COUNTER_DECREMENT_REQUESTED = 'COUNTER_DECREMENT_REQUESTED';
    export const COUNTER_DECREMENT_REQUESTED_ASYNC = 'COUNTER_DECREMENT_REQUESTED_ASYNC';
    

    指数js公司

    import * as actions from './constants';
    ...
    let eventEmitters = {};
    for(const action in actions ) {
      ...
    }
    export default eventEmitters;