使用地图上的键创建类型?

时间:2019-04-18 11:08:07

标签: typescript maps

如何使用地图中的键创建类型?

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 个答案:

答案 0 :(得分:1)

将数据传递到地图后,我们无法提取类型信息。如果我们将数据放在一个单独的变量中,并使用const断言(在3.4中)来确保typescript保留字符串文字类型,我们可以从那里提取类型信息:

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]