Typescript 元素隐式地具有一个';任何';类型,因为表达式的类型为';字符串';can';不能用于在angularjs中编制索引
***元素隐式具有“any”类型,因为“string”类型的表达式不能用于索引类型“{}” 在类型{}上找不到参数类型为“string”的索引签名 而且 显示对象可能未定义Typescript 元素隐式地具有一个';任何';类型,因为表达式的类型为';字符串';can';不能用于在angularjs中编制索引,typescript,angular11,Typescript,Angular11,***元素隐式具有“any”类型,因为“string”类型的表达式不能用于索引类型“{}” 在类型{}上找不到参数类型为“string”的索引签名 而且 显示对象可能未定义 我试图在一个typescript文件中实现这段代码,但它显示了这些错误。为什么?我找不到错误。请帮忙。 getGlobalData() { return this.http.get(this.globalDataUrl, { responseType: 'text' }).pipe( map(resul
我试图在一个typescript文件中实现这段代码,但它显示了这些错误。为什么?我找不到错误。请帮忙。
getGlobalData() {
return this.http.get(this.globalDataUrl, { responseType: 'text' }).pipe(
map(result => {
let data: GlobalDataSummary[] = [];
let raw = {}
let rows = result.split('\n');
rows.splice(0, 1);
// console.log(rows);
rows.forEach(row => {
let cols = row.split(/,(?=\S)/)
let cs = {
country: cols[3],
confirmed: +cols[7],
deaths: +cols[8],
recovered: +cols[9],
active: +cols[10],
};
let temp: GlobalDataSummary = raw[cs.country];
if (temp) {
temp.active = cs.active + temp.active
temp.confirmed = cs.confirmed + temp.confirmed
temp.deaths = cs.deaths + temp.deaths
temp.recovered = cs.recovered + temp.recovered
raw[cs.country] = temp;
} else {
raw[cs.country] = cs;
}
})
return <GlobalDataSummary[]>Object.values(raw);
})
)
}
getGlobalData(){
返回this.http.get(this.globalDataUrl,{responseType:'text'}).pipe(
映射(结果=>{
let数据:GlobalDataSummary[]=[];
设raw={}
让rows=result.split('\n');
行拼接(0,1);
//console.log(行);
rows.forEach(row=>{
设cols=row.split(/,(?=\S)/)
设cs={
国家:科尔斯[3],
已确认:+cols[7],
死亡人数:+cols[8],
恢复:+cols[9],
活动:+cols[10],
};
let temp:GlobalDataSummary=原始[cs.国家];
如果(临时){
温度激活=cs激活+温度激活
温度确认=cs确认+温度确认
临时死亡=临时死亡+临时死亡
温度恢复=cs恢复+温度恢复
原始[国家]=温度;
}否则{
原始[cs.国家]=cs;
}
})
返回Object.values(原始);
})
)
}
“字符串”类型的表达式不能用于索引类型“{}”
这意味着您不能执行{}['somePropertyName']
。这是因为raw
变量没有显式类型,代码将其初始化为{}
,一个空对象,没有属性索引器
您可以为raw
指定一种类型,该类型允许您的代码通过字符串索引获取其属性,如下所示:
let raw: {
[key: string]: any
};
“字符串”类型的表达式不能用于索引类型“{}”
这意味着您不能执行{}['somePropertyName']
。这是因为raw
变量没有显式类型,代码将其初始化为{}
,一个空对象,没有属性索引器
您可以为raw
指定一种类型,该类型允许您的代码通过字符串索引获取其属性,如下所示:
let raw: {
[key: string]: any
};
如果您只是想让错误消失,
让raw:any={}
。但是这样做就失去了打字脚本的意义。您甚至可以创建{[string]:any}
的索引类型。但即使这样,您也会失去键入的好处,但我在重构现有代码时经常这样做作为临时解决方案,以便以后创建更好的类型。但是这样做就失去了打字脚本的意义。您甚至可以创建{[string]:any}
的索引类型。但即使这样,您也会失去打字的好处,但我经常在重构现有代码时作为临时解决方案这样做,以便以后创建更好的类型。谢谢错误消失了。。。但是现在它在temp:GlobalDataSummary中显示“对象可能未定义”和返回对象。“变量raw在赋值之前使用”的值(raw)。。。。我该怎么办?好的。谢谢错误消失了。。。但是现在它在temp:GlobalDataSummary中显示“对象可能未定义”和返回对象。“变量raw在赋值之前使用”的值(raw)。。。。我该怎么办?