为什么特定字符串不符合包括该字符串在内的枚举?

问题描述 投票:0回答:1

如果我有枚举:

enum MyEnum {
  foo = 'FOO',
  bar = 'BAR',
}

const 字符串确认测试的结果如下:

type StringIsInEnum = 'FOO' extends MyEnum ? true : false; // false

有人可以解释为什么在这种情况下,

'FOO'
不扩展
MyEnum
吗?

MyEnum.foo
在运行时永远不会改变,并且
'FOO'
是一个常数值,因此也永远不会改变。

typescript enums
1个回答
0
投票

虽然 TypeScript 通常是一种结构性语言,但

enum
有一点例外。它们被设计为“标称”或“不透明”。因此,您无法将它们与字符串值进行比较。 但是,有解决方法... enum MyEnum { foo = 'FOO', bar = 'BAR', } type StringIsInEnum = 'FOO' extends `${MyEnum}` ? true : false; // true

TypeScript 游乐场

    

© www.soinside.com 2019 - 2024. All rights reserved.