枚举类型“枚举”的成员具有不是文字的初始值设定项

时间:2016-11-15 01:06:16

标签: typescript typescript-typings

我正在尝试将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文件

1 个答案:

答案 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
}