Создать тип с ключами из карты? - PullRequest
0 голосов
/ 18 апреля 2019

Как я могу создать тип с ключами с карты?

export const languageOptionsMap = new Map<string, ILanguageOption>([
    [
        'cs',
        {
            value: 'cs',
            order: 1,
            text: 'Česky',
        },
    ],
    [
        'en',
        {
            value: 'en',
            order: 2,
            text: 'English',
        },
    ],
]);

Я хочу сгенерировать тип LanguageCode без повторения ключей карты, как я делаю ниже:

export type LanguageCode = 'cs' | 'en';

1 Ответ

1 голос
/ 18 апреля 2019

После передачи данных на карту мы не можем извлечь информацию о типе. Если мы поместим данные в отдельную переменную и используем утверждение const (в 3.4), чтобы убедиться, что машинописный текст хранит строковые литеральные типы, мы можем извлечь информацию о типе оттуда:

const data = [
    [
        'cs',
        {
            value: 'cs',
            order: 1,
            text: 'Česky',
        },
    ],
    [
        'en',
        {
            value: 'en',
            order: 2,
            text: 'English',
        },
    ],
] as const
export const languageOptionsMap = new Map<string, ILanguageOption>(data);
export type LanguageCode = typeof data[number][0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...