title: string;
icon?: JSX.Element;
onClick: () => void;
}
```
Внутри компонента массив мапится
Есть функция обработки клика по элементу, которая принимает в себя onClick от IProps
```
const handleOnClick = (callback: typeof elements[number]["onClick"]): void => { callback();
....some code;};
```
мне не нравится конструкция elements[number]["onClick"]а точнее ["onClick"]
Хотелось бы что-то в стиле elements[number].onClick, но так нельзя
может есть какие-то элегантные варианты?
можешь вынести в отдельный тип эту конструкцию если не хочешь её там видеть
вынести ()=>void в отдельный тип (CallbackType, например) и юзать его и в IProps и для объявления callback аргумента?
Будто избыточно
наоборот дефолт,заодно уйдут эти тайпофы
с тем же успехом можно обратиться к интерфейсу, а не к тайпофу объекта IProps['onClick']
можно, но зачем?
если нужно избавиться только от квадратных скобок, то вынеси их в глобальный вспомогательный тип declare global { type ValueOf<T> = T[keyof T]; } const handleOnClick = (callback: ValueOf<Pick<typeof elements[number], 'onClick'>>): void => { callback(); //....some code; }; , но зачем?😅
Обсуждают сегодня