Enum.GetValues ​​(typeof (TEnum)) в машинописном тексте - PullRequest
0 голосов
/ 09 июля 2020

В Typescript я хотел бы получить все значения типа enum в массиве. Эквивалент в C# был следующим:

public static TEnum[] GetValues<TEnum>() where TEnum : Enum
{
    return Enum.GetValues(typeof(TEnum))
        .OfType<TEnum>()
        .ToArray();
}

Какой лучший перевод этого метода в Typescript, чтобы возможное использование было:

const allCountries: Country[] = GetEnumValues<Country>();

Обновление: Я используя Typescript 3.9.4, и нет проблем использовать более новую версию.

1 Ответ

0 голосов
/ 11 июля 2020

В легко сделать. Вы просто не можете использовать его с const enum. Typescript будет жаловаться, если вы его используете, потому что он недоступен во время выполнения.

function getEnumValues<T>(en: any): T[] { // maybe it can be done without using any but i don't know
   return Object.keys(en)
     .filter(k => !isFinite(Number(k))) // this filters the reverse mappings: https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings
     .map(k => en[k]);
}

См. Также пример: https://stackblitz.com/edit/typescript-z2swch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...