Кажется, вы хотите, чтобы Props
было обобщенным c, чтобы его можно было использовать различными типами объектов. Это может быть достигнуто путем определения универсального c типа T
в Props
interface Props<T> {
dropdownList: T[];
dropdownAttributes: (keyof T)[];
}
Теперь, если мы заранее знаем типы определенного объекта, мы можем создать интерфейс для этого, и создайте тип, который использует этот интерфейс в Prop
interface MyDropDownItem {
foo : number
}
type MyDropDownItemProps = Props<MyDropDownItem>;
Теперь мы можем использовать только экземпляры MyDropDownItem
в dropdownList
и его ключи в dropdownAttributes
const good: MyDropDownItemProps = {
dropdownList: [{foo: 2}],
dropdownAttributes : ['foo']
}
const bad: MyDropDownItemProps = {
dropdownList: [{foo: 2, bar: 's' /* error here */}],
dropdownAttributes : ['foo', 'bar' /* and here */ ]
}
Это, конечно, предполагает, что вы заранее знаете структуру своих выпадающих меню, потому что это единственное, что может помочь машинопись. Typescript не поможет вам с безопасностью типов во время выполнения.
Проверьте это на стеке