Typescript: 如何将枚举类型转换为数组<object/>

创建于 2016-12-13  ·  3评论  ·  资料来源: microsoft/TypeScript

我想将枚举类型转换为数组

例如:

枚举A {
狗= 1,
猫= 2
蚂蚁= 3
}

转换为:[{{id:1,name:'dog'},{id:2,name:'cat'},{id:3,name:'ant'}]

谢谢。

Question

最有用的评论

@narutomxc

这是一个问题跟踪程序,而不是标准的帮助论坛。 但是无论如何,这是您的操作方式:

// This requires TypeScript 2.1.
// If you need older versions, use `string` instead of `keyof E`.
interface EnumItem<E> { id: E; name: keyof E; }

function enumToArray<E>(Enum: {[keyof E]: E}): EnumItem<E>[] {
    return Object.keys(Enum).map(key => ({id: Enum[key], name: key} as EnumItem<E>))
}

所有3条评论

@narutomxc

这是一个问题跟踪程序,而不是标准的帮助论坛。 但是无论如何,这是您的操作方式:

// This requires TypeScript 2.1.
// If you need older versions, use `string` instead of `keyof E`.
interface EnumItem<E> { id: E; name: keyof E; }

function enumToArray<E>(Enum: {[keyof E]: E}): EnumItem<E>[] {
    return Object.keys(Enum).map(key => ({id: Enum[key], name: key} as EnumItem<E>))
}

好,谢谢

我发现{[keyof E]: E}在Webstorm中无法识别。 所以换成任何...

此页面是否有帮助?
0 / 5 - 0 等级