字符串枚举值的Typescript'const'断言

时间:2019-12-05 19:20:23

标签: typescript

我有这个枚举:

    enum Options {
        Option1 = "xyz",
        Option2 = "abc"
    }

我想通过创建联合类型'xyz'使用这些值进行类型检查。 'abc'。这是我的尝试,但出现此“ const”断言错误:

const validValues = Object.values(Options);
const validKeys = validValues as const;
                  ~~~~~~~~~~~ A 'const' assertion can only be applied to references to
                              enum members, or string, number, boolean, array, or object
                              literals.

执行此操作的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以将Options枚举用作类型

enum Options {
        Option1 = "xyz",
        Option2 = "abc"
 }

let validValue: Options
validValue = Options.Option1

console.log(validValue) // xyz

// however, note that this is not allowed
// validValue = 'xyz'

这是另一个变体,实际上没有使用枚举

type Options2 = {
    Option1: 'xyz',
    Option2: 'abc'
}

type keys = keyof Options2 // 'Option1' or 'Option2'
type values = Options2[keys] // 'xyz' or 'abc'

let validValue2: values
validValue2 = 'xyz'
console.log(validValue2) // xyz (duh!)

// this is not allowed
// validValue2 = 'nope'