打字稿:如何在多个文件中声明枚举?

时间:2016-07-14 16:30:20

标签: typescript enums

文件AppActions.ts

export enum Actions{
  START = 0,
  RECOVER,
  FIRST_RUN,
  ALERT_NETWORK,
  LOADING_DATA,
  RECEIVED_DATA,
  GO_OFFLINE,
  GO_ONLINE
}

文件PlayerActions.ts

import {Actions} from "./AppActions.ts"
enum Actions{
  HEAL_SINGLE,
  HIT_SINGLE
}

通常,对于this manual,它应该在编译时抛出错误。但是:

1- PlayerActions.ts似乎没有扩展现有的动作枚举。 (在WebStorm中import {Actions} from "./AppActions.ts"是灰色的)

2-编译器不会抛出任何错误。

那么在多个文件中声明枚举的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

由于Transpiler会为每个“导出”构建全局类型,因此在Typescript中似乎不可能有部分枚举。

一种可能的解决方案可能是合并两个(多个)枚举,如下所示:

在第一个文件中,您拥有:

export enum Action_first_half{
   START = 0,
   RECOVER,
   ...
}

在另一个文件中,您具有:

export enum Action_second_half {
   HEAL_SINGLE,
   HIT_SINGLE
}

然后在另一个文件中,您可以拥有:

const Actions = { ...Action_second_half , ...Action_first_half};
type Actions = typeof Actions ;

现在,您可以将“操作”视为常规枚举:

public const action: Actions = Actions.START;