首页 > 解决方案 > 为什么 Typescript 枚举值的非文字字符串索引表示为数字字符串而不是数字?

问题描述

如果我这样定义一个枚举:

enum MyEnum {
    First,
    Second,
};

...我尝试像这样获取“First”元素的值:

const value = MyEnum["First"];

...那么'value'的类型是'number'(由'typeof value'报告)。但是,如果我尝试以这种方式获取值:

const key: string = "First";
const value = MyEnum[key as any];

...那么“值”的类型是“字符串”。

为什么是这样?

我怀疑它与“as any”部分有关,因为如果我只省略“as any”,那么“value”就是一个数字,但是 TypeScript 编译器会对我大喊大叫,因为“Element 隐含地具有 any 类型,因为索引表达式不是数字类型'

如果我的索引是字符串值(不是文字),这是将值作为数字获取的“最佳”方式吗?

const value = Number(MyEnum[key as any]);

谢谢!

标签: javascripttypescript

解决方案


推荐阅读