<< Поправил две страницы PokemonCard+Home Отлично!

<< Еще объясни этот фрагмент, не совсем понял зачем вынесли пропсы в отдельную константу в одном месте мне кажется было удобней. Я уже писал ранее: надо стараться придерживаться принципа "Одна сущность - один файл". Хотя бы по отношению к основным компонентам. Не удобно заходить в компонент и искать где же начинается его код (пропуская прочие сущности). Ты эти константы раз напишешь и забудешь, а вот код компонента может меняться часто.

<< & Omit<Pokemon, 'abilities' | 'stats' | 'base_experience' | 'height'> << Объясни пожалуйста, как он работает Вообще, в подобных случаях лучше сначала гуглить. Простой же запрос "Typescript дженерики". Как правило есть на хабре что-нить. Вот отличная статья: https://habr.com/ru/post/455473/ Там даже с гифками. А в данном случае происходит следующее? 1. Omit<Pokemon, 'abilities' | 'stats' | 'base_experience' | 'height'> Omit - это функция, исключающая из типы перечисленные свойства. Официальная документация https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys То есть есть тип Pokemon, в котором перечислена куча свойств. Мне надо в другом компоненте перечислить свойства типа Pokemon, но вот только не все, а за исключением этих перечисленных. 2. Символ & - это сложение типов, то есть я к своему типу прибавляю еще и типы из покемона, за исключением перечисленных. << и вообще в каких случаях мы должны использовать дженерики. Везде, где это уместно и полезно. И если здесь не использовать Omit, то пришлось бы перечислять все типы из покемона повторно. А если мы их используем в нескольких местах? А если потом в покемоне поменяются или добавятся/удалятся какие-то типы? БЕгать потом по проекту и актуализировать? Omit - это тоже дженерик. Вообще, в TS, все, что имеет дополнительные параметры - это дженерики. А вот бывают и гораздо более сложные дженерики. К примеру, вот здесь: src/hooks/useProcessorMutation/index.tsx Здесь происходит целая магия. Это общий хук для всех запросов-процессоров (таких моих специализированных запросов, содержащих в ответах ошибки, если есть). Все ответы имеют общую структуру (success, message, errors, data), но все же отличаются, потому что data у каждых своя (User, Project, Task и т.п.), и разные входящие параметры. И вот задача был написать одну функцию, в которую можно передавать разные параметры, получать свои ответы и было понятно где что требуется и что будет возвращено. Вот какой результат в итоге: Он понимает, какие параметры может и должен принимать: И понимает что на выходе имеется: Такие дела...

Еще объясни этот фрагмент, не совсем понял зачем вынесли пропсы в отдельную константу в одном месте мне кажется было удобней.

Про этот дженерик говорил: & Omit<Pokemon, 'abilities' | 'stats' | 'base_experience' | 'height'> Объясни пожалуйста, как он работает и вообще в каких случаях мы должны использовать дженерики. Возможно в прошлом видео ты объеснял, но все не получается запомнить по видео, через текст проще, всегда можно вернуться посмотреть.

Ну да)) Ладно, со временем решится. Сейчас все равно надо функционал еще накидывать.

Супер! Интересно, во что выльется. Я бы себя предложил для доработки кабинета - но какой из меня дизайнер ты знаешь))

Слушай, когда просто смотришь кажется, что многое не понимаешь, но когда начинаешь тоже писать уже становится более понятно, что делаешь. Но вопросы будут не переживай)