Я использую интерфейсы для определения типобезопасных объектов в Typescript и обеспечения простой в обслуживании структуры кода. Однако в некоторых случаях интеллект нарушен.
Что должно быть лучшим подходом, когда ключи неизвестны, но все еще нужно завершить код?
Вот простой пример, чтобы показать, что я имею в виду:
interface IObject {
name: string,
value: number
};
// here is the type safe collection interface
interface ICollection {
[key: string]: IObject
};
// ...
// here is the type safe collection
let collection: ICollection = {
a: {
name: "a",
value: 1
},
b: {
name: "b",
value: 2
}
};
// here is the type unsafe collection
let collection2 = {
a: {
name: "a",
value: 1
},
b: {
name: "b",
value: 2
},
c: {
key: 1,
status: true
}
};
// ...
console.log(collection2.a.value); // this works ok, but it's not type safe
console.log(collection.a.value); // this is type safe, but there is no more intellisense support