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

如何在 map 函数中使用简单的 JavaScript查找表(即映射本身)?即我怎样才能摆脱这个字段(从这里"code"借来的),并且只使用方法内部的查找表?map

const 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("")

        )

    }

}




largeQ
浏览 92回答 2
2回答

Helenr

确切地知道您在寻找什么有点困难,但一眼就能看出……您可以!你应该能够做到:const Resistors = {&nbsp; black: 0,&nbsp; 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'希望这可以帮助!

慕盖茨4494581

进一步 - 并基于 - 贾斯汀的回答,这里是另一个关于在哪里定义你的类型的例子:const messages: {[index: string]: string} = {&nbsp; 'required': 'The value is required',&nbsp; 'minimumValue': 'The value is not large enough'}const validationErrorType = 'required';const messageToUser = messages[validationErrorType];
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript