为了账号安全,请及时绑定邮箱和手机立即绑定

如何在打字稿地图方法中使用javascript查找表?

如何在打字稿地图方法中使用javascript查找表?

largeQ 2022-10-21 10:33:06
如何在 map 函数中使用简单的 JavaScript查找表(即映射本身)?即我怎样才能摆脱这个字段(从这里"code"借来的),并且只使用方法内部的查找表?mapconst Resistors = {    "black": 0,    "brown": 1,    "red": 2,    "orange": 3,   "yellow": 4,   "green": 5,    "blue": 6,     "violet": 7,   "grey": 8,    "white": 9,    // Why not Resistors[color]    "code" : (color: string) => {        function valueOf<T, K extends keyof T>(obj: T, key: K) {            return obj[key];        }        return valueOf(Resistors, color as any);    }}class ResistorColor {    private colors: string[];    constructor(colors: string[]) { this.colors = colors; }    value = () => {        return Number.parseInt(            this.colors                  .map(Resistors.code) // How can i get rid of .code here?                  .join("")        )    }}
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

确切地知道您在寻找什么有点困难,但一眼就能看出……您可以!你应该能够做到:


const Resistors = {

  black: 0,

  brown: 1,

}

接着...


const numericColorCode = Resistors['black'];

console.log(numericColorCode) // should be 0

现在,有时 TypeScript 编译器会对这种事情发脾气。您可能需要执行以下操作才能使编译器满意:


const numericColorCode = (Resistors as {[index: string]: number})['black'];

至于你下面的问题 - 使用Object.keys和Array.join!


const allTheColors = Object.keys(Resistors).join(',');

console.log(allTheColors); // should be 'black,brown'

希望这可以帮助!


查看完整回答
反对 回复 2022-10-21
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

进一步 - 并基于 - 贾斯汀的回答,这里是另一个关于在哪里定义你的类型的例子:


const messages: {[index: string]: string} = {

  'required': 'The value is required',

  'minimumValue': 'The value is not large enough'

}


const validationErrorType = 'required';

const messageToUser = messages[validationErrorType];


查看完整回答
反对 回复 2022-10-21
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信