typescript - 打字稿比较两个不同的枚举,如果值相同则返回键
问题描述
我有 2 个不同的枚举,给定 1 个枚举,我想检查该值是否存在于另一个枚举中并返回密钥。
function foo(enum2Value: enum2) {
const enum1Key = Object.keys(enum1).find((key: any) => {
return enum1[key] === enum2;
});
return enum1Key;
}
此代码有效。但我必须对任何一个施放钥匙。如果我使用字符串,则 enum1[key] === enum2 不起作用。比较两个不同的枚举的更好方法是什么
解决方案
const enumValByKey = (k: string, o: object) =>
(k in o) ? (o as Record<typeof k, string | number>)[k] : null;
enumValByKey('ABC', enum1); // value of enum1.ABC, or null
不幸的是,我的解决方案仍然需要断言。string | number
据我所知,涵盖了所有 TS 枚举。
好奇是否有一种方法可以在没有断言的情况下对此进行建模。
推荐阅读
- node.js - 无法在sailsjs中使用User.update()更改用户的密码,获取返回[Deferred]
- python - 如何避免 altair 查看时出现 Javascript 错误?
- powershell - Powershell编码命令未执行
- markdown - 如何在预览模式下制作 Markdown 渲染 html 代码(真正的内嵌 YouTube 视频)?HackMD 不能是唯一知道的人
- python - URL 隔离的 Python 帮助
- haskell - 是否可以在不使用 Reader/Writer/State Monad 或 Monad Transformer 的情况下在 Haskell 中构建 Restful API
- amazon-web-services - AWS 层级限制警报
- c# - 如何访问 Acumatica C# 中的自定义字段
- django - 如何在django模板中获取一定数量的元素
- android - android显示随机数据