对于我的应用程序中的各种配置(参数等),我喜欢使用对象。对象的键不是字符串,而是枚举。
当键不是字符串时,如何遍历键并将每个键作为正确的枚举类型获取?
例:
enum Color {
RED = 1
}
let colorNames: { [key in Color]?: string } = {
[Color.RED]: "red"
}
Object.keys(colorNames).forEach(colorsKeyStr => {
let colorNum: Color = colorsKeyStr // <-- produces error
// What's the proper way to cast a "color" variable to the "Color" enum type?
})
如果您需要密钥是其他东西而不是字符串,则可以使用地图。
enum Color {
RED = 1,
}
const colorNames: Map<Color, string> = new Map();
colorNames.set(Color.RED, "red");
// Looping over map
colorNames.forEach((value, key) => {
console.log("key", key); // Expected: 1
console.log("value", value); // Expected: "red"
});
// Get single value
const red = colorNames.get(Color.RED);
另一种选择是将强制colorsKeyStr
转换为数字。
enum Color {
RED = 1
}
let colorNames: { [key in Color]?: string } = {
[Color.RED]: "red"
}
Object.keys(colorNames).forEach(colorsKeyStr => {
const index = Number(colorsKeyStr);
let colorNum: Color = index;
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句