javascript - 为什么 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]);
谢谢!
解决方案
推荐阅读
- python - Python asyncio 从“call_soon_threadsafe”收集返回值
- javascript - React Native 从任意数据创建 blob
- sql - 丢弃查询中的某些相关行
- sql - 为 ColumnB 中的每个唯一值计算 ColumnA 中的不同值
- spring - Spring Boot Webapp 无法连接到 MariaDb
- java - 如何从 REQUEST 范围获取 Spring Boot 中的对象
- r - 如何根据 r 中的当前向量有效地更改数据帧中向量的值?
- reactjs - 如何在本机反应中从多值数组中获取特定键值
- unit-testing - 使用 doctests 对定义的类进行单元测试
- julia - 何时在基准表达式中进行插值