Typescript: Как преобразовать тип перечисления в массив<object/>

Созданный на 13 дек. 2016  ·  3Комментарии  ·  Источник: microsoft/TypeScript

Я хочу преобразовать тип перечисления в массив.

пример :

enum A {
собака = 1,
cat = 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 рейтинги