TS2474 (TS) 在'const'枚举声明中,成员初始值设定项必须是常量表达式



错误代码:

export declare const enum JSDocTagName {
Desc = "desc",
Id = "id",
Meaning = "meaning",
}

将 Angular 6 与 .net 框架结合使用

常量枚举在转译过程中被擦除,因此它们不会在运行时应用中留下任何代码。所有用途都替换为整个应用程序的值。因此,您的declare关键字是多余的:

export const enum JSDocTagName {
Desc = "desc",
Id = "id",
Meaning = "meaning"
}

与普通枚举不同,常量枚举不能具有某些类型的计算值,例如,在普通枚举中允许这样做,但不允许常量枚举:

const x = 1;
enum A {
Name = x,
Age = x + 1
}

您的错误通常是因为您尝试在常量枚举上执行类似上述操作。

即使在常量枚举中,您也可以使用一些计算值 - 只要结果是可预测的,例如:

const enum A {
Name = 1 << 0,
Age = 1 << 1,
Date = 1 << 2
}

最新更新