为什么Object.values()
and Object.keys()
总是同时给出键和值?
考虑以下代码:
enum Enum {
FOO,
BAR
}
console.log(Object.values(Enum));
console.log(Object.keys(Enum));
其输出将是:
[ 'FOO', 'BAR', 0, 1 ]
[ '0', '1', 'FOO', 'BAR' ]
为什么要这样做以及我如何只获取键和值?
这就是如何enum
类型由 TypeScript 转译。
enum Enum {
FOO,
BAR
}
会变成
"use strict";
var Enum;
(function (Enum) {
Enum[Enum["FOO"] = 0] = "FOO";
Enum[Enum["BAR"] = 1] = "BAR";
})(Enum || (Enum = {}));
请注意,提供了数字键和字符串键,以便轻松映射到这两种类型或从这两种类型进行映射,使您能够执行如下操作:
const value = Enum.FOO; // inferred type Enum.FOO
const key = Enum[value]; // inferred type string
如果您想获取仅包含数字或字符串键的数组,可以这样做:
const numericKeys = Object.keys(Enum).map(x => parseInt(x)).filter(x => !isNaN(x));
const stringKeys = Object.keys(Enum).filter(x => isNaN(parseInt(x)));
或者对于数字或字符串值(需要es2017
你的图书馆tsconfig
):
const numericValues = Object.values(Enum).filter(x => typeof x === "number");
const stringValues = Object.values(Enum).filter(x => typeof x === "string");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)