enumToObject<T extends Record<keyof T, number | string>>
这段 TypeScript 代码定义了一个名为 enumToObject
的函数,用于将枚举对象转换为普通对象,其中枚举的键成为普通对象的键,枚举的值成为对应键的值。但是,从代码来看,函数的目标类型转换似乎存在问题,因为它总是尝试将枚举成员的值作为字符串键添加到目标对象中,但实际上不是所有枚举成员都适合这样做。这里我将先解释代码逻辑,然后提出一个修正版本并给出使用文档。
代码逻辑解释:
- 函数
enumToObject
接受一个泛型参数T
,约束为一个记录类型(Record),其中键必须是T
的键,而值必须是number
或string
类型。 - 定义一个空对象
obj
,类型声明为与输入枚举对象结构相同的类型。 - 使用
for...in
循环遍历输入的枚举对象enumObj
的所有键。 - 获取枚举成员的值
keyStr
。 - 判断
keyStr
的类型是否为number
,如果不是,则将其当作字符串键添加到obj
中,值为枚举成员的值。
修正后的代码:
使用文档:
函数签名:
功能:
enumToObject
函数用于将一个枚举对象转换成一个普通对象,其中枚举的键和值都被复制到新的对象中。
参数:
enumObj
:类型为泛型T
的枚举对象,其中T
扩展自Record<keyof T, string | number>
,表明枚举对象的键和值都是字符串或数字。
返回值:
- 一个普通对象,其键与
enumObj
相同,值也与enumObj
的相应键的值相同。
示例用法:
假设有一个枚举对象 MyEnum
:
请注意,原始代码片段的问题在于它仅在值不是数字时才将键值对添加到新对象中,而在大多数情况下,枚举的值无论是数字还是字符串都应该被复制到新对象中。
上述修正后的代码解决了这个问题。
__EOF__

本文作者:龙陌
本文链接:https://www.cnblogs.com/longmo666/p/18092087.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/longmo666/p/18092087.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)