我有这段代码
let hostel : HostelType;
hostels.forEach( (r) => {
const i = r.identifier.findIndex((_identifier: any) => _identifier.id === '433456');
hostel = hostels[i];
});
hostel.serviceLevel.value = 'P';
但是我有一个编译错误:
Variable 'hostel' is used before being assigned.
答案 0 :(得分:0)
您应该确保分配了一个实例:
let hostel : HostelType;
hostels.forEach( (r) => {
const i = r.identifier.findIndex((_identifier: any) => _identifier.id === '433456');
if (i === -1 || !hostels[i]) {
throw new Exception('There is no hostel');
}
hostel = hostels[i];
});
hostel.serviceLevel.value = 'P';
理想的代码应该是这样的:
const hostel = hostels.find(x => x.identifier === '433456');
目前尚不清楚为什么identifier
是一个数组以及它与hostels
数组中的索引之间的关系。
答案 1 :(得分:0)
您在初始化之前使用它。
您需要在循环之前使用hostel = new HostelType();
答案 2 :(得分:0)
您需要先初始化hostel
,然后才能在hostel.serviceLevel.value = 'P';
语句中使用它,
或检查是否确实已定义:
if (typeof hostel !== 'undefined') {
hostel.serviceLevel.value = 'P';
}
hostel
变量可能未定义:
hostels
为空(永远不会调用回调中的代码),hostels
中的最后一个元素包含一个标识符,该标识符的id
字段与433456
匹配(i
在上一次迭代中将是-1
)