【问题标题】:Error setting initial member value of an enum object from local variable从局部变量设置枚举对象的初始成员值时出错
【发布时间】:2017-06-22 20:35:09
【问题描述】:

playground here 中的打字稿示例。

我正在尝试设置枚举对象的初始成员值,并且该初始值来自 const(数字)。 在这种情况下,以下所有值都会产生 TS 错误:“枚举成员必须具有初始化程序。”

这是不允许的吗? 为什么后面的成员不设置为前面的枚举成员加一?

为简洁起见,这里是代码,但您可以在上面的操场链接中看到它:

const firstValue: number = 100;
enum Animal {
    Lion = firstValue,
    Tiger,  // gives error
    Horse,  // gives error
    Fish    // gives error
}

【问题讨论】:

    标签: typescript enums initialization


    【解决方案1】:

    目前确实不允许这样做 - 当使用初始化程序跟随另一个枚举成员时,枚举成员仅在计算值静态已知时自动递增。目前,这仅包括数值字面量和其他静态已知值的枚举成员,但分析目前不包括 const 声明。

    你可以解决这个问题

    enum FirstValue {
        firstValue = 100
    }
    

    并使用FirstValue.firstValue 而不是firstValue

    【讨论】:

    • 其实我可能发现了另一个限制。我需要将枚举 FirstValue 放在一个外部文件中(因为它需要从多个文件中使用),当我从该外部文件中导出它,然后我将它导入到 Animal 枚举所在的文件中时,我可以'不要再使用它了,因为它给了我这个错误:[ts] Type 'FirstValue' is not assignable to type 'Animal'
    猜你喜欢
    • 2013-06-01
    • 2016-03-04
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多