如何解决在 TypeScript 中转换枚举结构 value:key 到 key:value
我正在尝试使用此代码将枚举结构从 [key:value] 以字符串形式转换为 [value:key] 结构。
我的错误是
Element implicitly has an 'any' type because expression of type 'number | "toString" | "charat" | "charCodeAt" | "concat" | "indexOf" | "lastIndexOf" | "localeCompare" | "match" | "replace" | "search" | "slice" | "split" | "substring" | "toLowerCase" | ... 31 more ... | "trimEnd"' can't be used to index type 'typeof Country'.
No index signature with a parameter of type 'number' was found on type 'typeof Country'
key as keyof Country
枚举
export enum Country {
UnitedStates = 'US',Afghanistan = 'AF',Alandislands = 'AX',}
public countries = Object.keys(Country)
.slice(Object.keys(Country).length / 2)
.map(key => ({
label: key,key: Country[key as keyof Country],}));
当枚举的值为 int 时,此代码有效。
解决方法
问题是您转换为错误的类型
这是一个typescript playground example
keyof Country
包括 Country 枚举对象的所有键 - 只需在示例中显示 TKeys
即可查看列表
你真正想要的是:Country[key as keyof typeof Country]
keyof typeof Country
是所有枚举键的类型:"UnitedStates" | "Afghanistan" | "AlandIslands"
在示例中将 TEnumKeys
悬停在上方。
要了解差异,请查看以下问题:What does “keyof typeof” mean in TypeScript?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。