Typescript - 从枚举中访问值

标签 typescript enums

我试图解决 typescript 挑战并遇到了这个问题元素隐式具有“任何”类型,因为索引表达式不是“数字”类型。在这一行 Resistors[val ] 我不确定我在这里做错了什么。如果有人可以指导我到这里,那将非常有帮助。提前致谢!

enum Resistors {
  Black = 0,
  Brown = 1,
  Red = 2,
  Orange = 3,
  Yellow = 4,
  Green = 5,
  Blue = 6,
  Violet = 7,
  Grey = 8,
  White = 9
} 

export function decodedValue(labels : string[]) {
  let valuesArr: string[] = labels.map((value: string) => {
    const val: string = value.charAt(0).toUpperCase() + value.slice(1);
     return Resistors[val];
  });
  return Number(valuesArr.join(''));
}

console.log(decodedValue(['brown', 'black']));

最佳答案

首先,您的 Enum 应如下所示 ( source ):

enum Resistors {
  Black,
  Brown,
  Red,
  Orange,
  Yellow,
  Green,
  Blue,
  Violet,
  Grey,
  White,
}

其次,这里是 source关于如何访问枚举的属性。

然后,像这样的东西会起作用:

export function decodedValue(labels: string[]) {
  let valuesArr: number[] = labels.map((value: string) => {
    const val: string = value.charAt(0).toUpperCase() + value.slice(1);
    return Resistors[val as keyof typeof Resistors];
  });
  return Number(valuesArr.join(""));
}

关于Typescript - 从枚举中访问值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72955807/

相关文章:

c# - 在枚举中扩展功能

javascript - 当我在解构原始类型后解构 Partial 类型时,Typescript 不会给出错误

c# - 通过 ValueMember 为类的枚举属性选择 ComboBox

Angular 2 在 Post 上重新加载数据

node.js - 在 NestJS 中创建代理

c++ - typedef'ing enum 不会使 enum-values 可见

java - 用 Java 中的类替换枚举结构是否仍然相关?

c++ - 如何在 C++ 中的不同翻译单元之间共享枚举实例?

Angular 5 - 在浏览器刷新时将页面重定向到主页

javascript - 如何在规范文件中注入(inject)服务 Angular Testing (Jasmine/karma)