Javascript Typescript-索引表达式参数的类型必须为';字符串'';编号'';符号';或';任何';
我使用的是Typescript 1.7.5,在以下情况下遇到Javascript Typescript-索引表达式参数的类型必须为';字符串'';编号'';符号';或';任何';,javascript,typescript,Javascript,Typescript,我使用的是Typescript 1.7.5,在以下情况下遇到索引表达式参数的类型必须为'string'、'number'或'any'错误: const settings: any = {}; _.forEach(data, (d, name: string) => { //data is just an object settings[name] = {}; const colors = ColorGenerator.generateColors(Object.keys
索引表达式参数的类型必须为'string'、'number'或'any'
错误:
const settings: any = {};
_.forEach(data, (d, name: string) => { //data is just an object
settings[name] = {};
const colors = ColorGenerator.generateColors(Object.keys(d.ch).length);
_(d.ch)
.keys()
.zip(colors)
.forEach(([channel, color]) => {
// name and channel are both strings
settings[name][channel] = { // this line is throwing the error
channel,
color,
visible: true
};
}).value();
});
导致错误的是通道
变量吗?我怎样才能同时输入和分解它
另外,我省略了不必要的代码,因此如果有什么不合理的地方,请告诉我。TypeScript似乎无法正确猜测类型,因此我们可以通过显式类型声明来帮助它:
// .forEach( ([channel, color]) => {
.forEach( ([channel, color]: [string, string]) => {
甚至可能,如果颜色类型更具体,例如:
const colors: any [] = ...
应该有助于确保支持类型的索引/键通道和颜色为什么要将数组传递给
forEach
?您的意思是什么?第二个forEach?完美!谢谢,我不知道如何输入解构变量