如何使用地图中的键创建类型?
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';
答案 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]