我正在尝试将Enum值用作文字类型,如下所示。但是,我收到以下错误:Enum type 'Enum' has members with initializers that are not literals.
declare const enum Enum {
A,
B
}
interface Test {
prop: Enum.A;
}
如果我执行以下操作,则可以使用:
declare const enum Enum {
A=0,
B=1
}
interface Test {
prop: Enum.A;
}
为什么这可以解决问题?不使用const enum
将不同枚举的值设置为0,1,2等?
注意:此代码位于.d.ts
文件
答案 0 :(得分:3)
TypeScript确定实际枚举的内容为0,1,2
,例如
const enum Enum {
A
}
interface Test {
prop: Enum.A;
}
这是因为它的编译上下文中有A = 0
。但是对于声明
declare const enum Enum {
A
}
interface Test {
prop: Enum.A; // ERROR
}
它不受其控制,因此如果没有查看实现或您提供它需要的提示,它就不能确定:
declare const enum Enum {
A = 0
}
interface Test {
prop: Enum.A; // OKAY
}