TypeScript中能否将Symbol作为枚举成员的值?
TypeScript中能否用Symbol作为枚举成员的值?
TypeScript的枚举是常用特性,常规枚举的创建方式如下:
enum Constants { label = "label" } export default Constants
我尝试将枚举成员的值设置为Symbol,写法如下:
enum Constants { label = Symbol() } export default Constants
但TypeScript不接受该写法,报错提示:
Only numeric enums can have computed members, but this expression has
type 'symbol'. If you do not need exhaustiveness checks, consider
using an object literal instead.ts(18033)
请问在TypeScript中是否可以使用Symbol作为枚举成员的值?
TypeScript不支持将Symbol作为枚举成员的值
从报错信息可明确:只有数值类型的枚举允许使用计算成员,而Symbol属于引用类型,不符合TypeScript枚举的成员值规则。TypeScript枚举的成员值仅支持字符串字面量或数值(包括计算得到的数值),动态生成的Symbol不在允许范围内。
如果需要用Symbol作为常量值,推荐使用对象字面量模拟枚举,示例代码如下:
const Constants = { label: Symbol() } as const; export default Constants;
这种方式虽然失去了枚举的穷尽性检查特性,但完全满足用Symbol作为常量值的需求,且TypeScript会自动进行类型推断,约束该对象的使用范围。
内容的提问来源于stack exchange,提问作者Islam Y-
相关产品推荐
相关产品推荐

