У меня есть переменная, определенная следующим образом:
const myObjects : { [ id : number ] : MyObject | undefined } = {};
каждый раз, когда я добавляю объект в эту переменную, это будет выглядеть так:
let i=0;
myObjects[++i] = obj1;
myObjects[++i] = obj2;
когда я хочу удалить объект, который я делаю:
myObjects[0] = undefined;
Есть ряд мест, где мне нужно перебрать все сохраненные объекты и что-то сделать. Вот где я получаю ошибку eslint от @ typescript-eslint / no-non-null-assertion
мой код выглядит так:
for( const idString in myObjects ) {
const id = +idString;
const obj = myObjects[id]!; //eslint error here
for( const car of obj.cars ) {
console.log( car );
}
}
Чтобы избавиться от ошибки eslint , Я мог бы обернуть внутренний for-l oop внутри оператора if, чтобы гарантировать, что obj! == undefined вот так:
for( const idString in myObjects ) {
const id = +idString;
const obj = myObjects[id];
if( obj ) {
for( const car of obj.cars ) {
console.log( car );
}
}
}
Технически obj никогда не должен быть undefined, если я получаю все идентификаторы из myObjects во внешнем for-l oop. Есть ли лучший способ написать этот код? Есть ли лучший способ получить идентификатор (номер) ... похоже, что внешний for-l oop автоматически преобразует все свойства в строки, хотя определение TypeScript для myObjects говорит, что это должно быть число.