我在子模块的某处声明了一个枚举,我想在我的实际项目中重新导出它。
模块 :
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 的信息?
您的再出口应该是:
export { name as name2 };
Run Code Online (Sandbox Code Playgroud)
这可以与任何类型的声明名称一起使用:变量、枚举、类等。
建议的方法对我不起作用,因为我导入如下名称:
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 会弄清楚它想要哪一个。
| 归档时间: |
|
| 查看次数: |
1442 次 |
| 最近记录: |