在打字稿中重新导出枚举

mme*_*son 4 typescript

我在子模块的某处声明了一个枚举,我想在我的实际项目中重新导出它。

模块 :

export enum name {
  TOTO = "toto",
  TITI = "titi",
}
Run Code Online (Sandbox Code Playgroud)

出口 :

import { name } from "module"
export type name2 = name
Run Code Online (Sandbox Code Playgroud)

索引.ts:

switch (var) {
  case name2.toto: // 'name2' only refers to a type, but is being used as a value here.
}
Run Code Online (Sandbox Code Playgroud)

我怎么能不丢失 name2 最初是 enum 的信息?

Mat*_*hen 8

您的再出口应该是:

export { name as name2 };
Run Code Online (Sandbox Code Playgroud)

这可以与任何类型的声明名称一起使用:变量、枚举、类等。


Onk*_*tem 5

建议的方法对我不起作用,因为我导入如下名称:

import * as API from './__generated__/api/data-contracts.ts' 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们不能简单地将其导出为:

export { API.name as name2 };
Run Code Online (Sandbox Code Playgroud)

因为这是一个错误。

幸运的是,我终于学会了一种方法,感谢systemfault@libera.chat#javascript

export type name2 = API.name;
export const name2 = API.name;
Run Code Online (Sandbox Code Playgroud)

这样,我们就可以两全其美——类型和值。TS 会弄清楚它想要哪一个。