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

Typescript 使用地图中的键创建类型?,typescript,maps,Typescript,Maps,如何使用地图中的键创建类型 export const languageOptionsMap = new Map<string, ILanguageOption>([ [ 'cs', { value: 'cs', order: 1, text: 'Česky', }, ], [ 'en', {

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

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

将数据传递到映射后,我们无法提取类型信息。如果我们将数据放在一个单独的变量中,并使用
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]
const数据=[
[
“cs”,
{
值:“cs”,
订单:1,
文本:“Česky”,
},
],
[
"嗯",,
{
值:“en”,
订单:2,
正文:“英语”,
},
],
]常量
export const language options映射=新映射(数据);
导出类型语言代码=数据类型[编号][0]

每当我看到
Map
时,我都想知道为什么有人不使用普通对象类型。在这种情况下,
languageoptions映射.get(key).value==key
的约束不能用
Map
接口表示,但可以表示为映射类型,如
const asLanguageOptions=(t:t)=>t@jcalz完全同意这个简单的对象,在我看来要简单得多。事实上,
languageOptionsMap.get(key.value===key
是未选中的。但是,嘿,我只是提供
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]