如何在TypeScript中使用泛型索引记录?

如何在TypeScript中使用泛型索引记录?,typescript,typescript-typings,Typescript,Typescript Typings,我有一个LocalizationMap,我正在尝试使用泛型对其进行索引,下面是我的尝试,我在出现类型错误的地方添加了一条注释 界面问候语{ 类型:字符串; 道具:永不; } 接口号七{ 类型:数字; 道具:永不; } 接口外部raysmixed{ 类型:[字符串,数字]; 道具:额外的SarraysMixedProps; } 接口ExtraSarraysMixedOps{ 名称:字符串; } 接口城市{ 类型:字符串; 道具:城市计划; } 接口城市计划{ 城市:字符串; } 接口定位图{ 问候

我有一个
LocalizationMap
,我正在尝试使用泛型对其进行索引,下面是我的尝试,我在出现类型错误的地方添加了一条注释

界面问候语{
类型:字符串;
道具:永不;
}
接口号七{
类型:数字;
道具:永不;
}
接口外部raysmixed{
类型:[字符串,数字];
道具:额外的SarraysMixedProps;
}
接口ExtraSarraysMixedOps{
名称:字符串;
}
接口城市{
类型:字符串;
道具:城市计划;
}
接口城市计划{
城市:字符串;
}
接口定位图{
问候语:问候语;
“数字七”:数字七;
“extras.array.mixed”:ExtrasArraysMixed;
城市:城市;
}
常量可用语言=[“en”,“nl”]作为常量;
类型Cache=记录;
导出常量setLanguage=(lang:T)=>{
//类型“props”不能用于索引类型“K”。
返回(
关键:K,
…占位符:V从不扩展?[]:[V]
):V=>{
让翻译=关键
//类型“K”上不存在属性“split”。
.拆分(“.”)
.reduce((acc,val)=>acc[val],cache[lang]);
返回翻译;
};
};
//我正在尝试获取的用法
常量x=设置语言(“en”);
//未提供“占位符”的参数。
x(“问候”);
x(“extras.array.mixed”{name:“Dan”});

您似乎在为错误的类型编制索引,可能需要类似以下内容:

const可用语言=[“en”,“nl”]作为常量;
type CacheKeys=可用语言的类型[编号]
类型Cache=记录;
导出常量setLanguage=(lang:T)=>{
返回
(
关键:K,
…占位符:V[]
):V=>{
返回key.split(“.”)。reduce((acc,val)=>acc[val],cache[lang]);
};
};
常量x=设置语言(“en”);
x(“问候”);//作品
x(“extras.array.mixed”{name:“Dan”});//作品
x(“城市”{城市:“敖德萨”});//作品

您似乎在为错误的类型编制索引,可能需要类似以下内容:

const可用语言=[“en”,“nl”]作为常量;
type CacheKeys=可用语言的类型[编号]
类型Cache=记录;
导出常量setLanguage=(lang:T)=>{
返回
(
关键:K,
…占位符:V[]
):V=>{
返回key.split(“.”)。reduce((acc,val)=>acc[val],cache[lang]);
};
};
常量x=设置语言(“en”);
x(“问候”);//作品
x(“extras.array.mixed”{name:“Dan”});//作品
x(“城市”{城市:“敖德萨”});//作品