我有一个枚举,在我的项目中几乎所有地方都可以使用它。我不想将其导入每个文件中。有没有一种方法可以在.d.ts
文件中定义一个枚举,以便在编译为js时可以内联?
在我尝试过的types/global.d.ts
文件中
declare enum MessageType {
DIRECT = 'direct',
FORWARDED = 'forwarded'
}
当我运行该应用程序时,在我尝试使用该代码的地方出现MessageType.DIRECT is not defined
错误。我从未导入过该枚举,因为tslint可以识别它并且自动补全也可以正常工作。
我也尝试过declare const enum ...
,效果相同。
有什么想法吗?
答案 0 :(得分:1)
通过使用declare
,您已经创建了一个环境枚举,这意味着您正在定义现有对象的形状,因此这只是生成类型,而不是实际对象。
如果删除declare
,它将同时创建枚举的类型和对象
https://www.typescriptlang.org/docs/handbook/enums.html详细介绍了环境枚举
答案 1 :(得分:0)
declare
关键字指示相关的函数,类等在其他位置定义,并且TSC不应为该对象发出任何运行时代码。
我建议将其放置在声明文件(.d.ts
)之外的其他打字稿文件中,并删除declare
或在{{1 }}文件。