И не совсем понятно суммарное время моих проектов или всех которые там отображаются. Я так понимаю еще нет функционала по выбору только моих проектов, значит всех получается?
Я правильно понимаю, что вывод должен быть примерно там где сейчас заголовок лог выполнения?
Думаю можно в облаке синхронизировать его с компом, сейчас все провайдеры такую возможность предоставляют. Да и с внешним диском мне кажется тоже можно.
<< Поправил две страницы 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'>

Объясни пожалуйста, как он работает и вообще в каких случаях мы должны использовать дженерики.

Возможно в прошлом видео ты объеснял, но все не получается запомнить по видео, через текст проще, всегда можно вернуться посмотреть.