Я пытаюсь найти правильный путь для l oop через объект при использовании TypeScript. Следующие примеры будут действительны JavaScript, но я понимаю, почему это становится проблемой в TypeScript, однако я не нахожу правильный путь для выполнения этой задачи, и мне было интересно, если я думаю об этом неправильно.
Моя цель состоит в том, чтобы пройти через двухуровневый объект и иметь возможность доступа к элементу непосредственно из объекта в конце, а не только к его значению.
Пример:
interface A {
abc: number
acd: number
}
interface B {
bcd: number
bde: number
}
interface C {
cde: number
cef: number
}
interface Data {
a: A
b: B
c: C
}
const data: Data = {
a: {
abc: 1,
acd: 2
},
b: {
bcd: 3,
bde: 4
},
c: {
cde: 5,
cef: 6
}
}
// Trying with for-in
for (const cat in data) {
for (const item in cat) {
console.log(cat, item) // works just fine cause both are strings
console.log(data[cat][item]) // both cat and items are strings and not keys of Data.
}
}
// Trying with for-of
for (const cat of Object.keys(data)) {
for (const item of Object.keys(cat)) {
console.log(data[cat][item]) // Same, cat becomes just a string and not valid key of Data.
}
}
// Trying with forEach
Object.keys(data).forEach((cat) => {
Object.keys(cat).forEach(item => console.log(data[cat][item])) // same thing, cat is just a string and not exactly a key of Data
})
Спасибо всем:)