我有这个枚举:
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.
执行此操作的正确方法是什么?
答案 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'