Как типизировать массив с вложенными элементами?
Есть массив (содержимое примерное):
let test: IRepo[] = [
{'id': 1, 'test': 1, 'name': 'Иван'},
{'id': 2, 'test': 2, 'name': 'Олег'},
{'id': 3, 'test': 3, 'name': 'Виталий'},
{'id': 4, 'test': 4, 'name': 'Аркадий' // ключей может быть много},
// объектов может быть много
]
interface IRepo {
// ???
}
Как описать интерфейс, если нужен только ключ 'name', остальные ключи не нужны?
Ответы (2 шт):
Автор решения: Alex Sazonov
→ Ссылка
Вроде вот так валидный вариант. Playground
let test: IRepo[] = [
{'id': 1, 'test': 1, 'name': 'Иван'},
{'id': 2, 'test': 2, 'name': 'Олег'},
{'id': 3, 'test': 3, 'name': 'Виталий'},
{'id': 4, 'test': 4, 'name': 'Аркадий'},
{'id': 4, 'test': 4, 'name': 'Аркадий', 'data': new Object}, // ключей может быть много},
// объектов может быть много
]
interface IRepo {
id: number;
test: number;
name: string;
[key: string]: any
}
Автор решения: yar85
→ Ссылка
interface IRepoEntry {
name: string;
[key: string]: any;
}
interface IRepo {
[index: number]: IRepoEntry;
}
const test: IRepo = [
{'id': 1, 'test': 1, 'name': 'Иван'},
{'id': 2, 'test': 2, 'name': 'Олег'},
{'id': 3, 'test': 3, 'name': 'Виталий'},
{'id': 4, 'test': 4, 'name': 'Аркадий'},
{'id': 4, 'test': 4, 'name': 'Аркадий', 'data': new Object}, // ключей может быть много},
// объектов может быть много
];