Практика №13. Социальная сеть - Часть 2. Миграция на TypeScript
Общее описание
Переписать одностраничное веб-приложение (SPA), разработанное в рамках задания №12, с использованием TypeScript вместо JavaScript. Проект должен по-прежнему быть основан на React + Vite, использовать статические mock-данные, и сохранять всю функциональность, реализованную ранее. Все компоненты, хуки, утилиты и маршруты должны быть типизированы. Репозиторий на GitHub должен называться: Group_LastName_task-13 (или, перенести прошлую версию на ветку "javascript" и продолжать работать в Group_LastName_task-12).
Это не просто добавление расширения .ts — необходимо корректно использовать систему типов TypeScript для повышения надёжности и читаемости кода.
Ресурсы
(пусто)
Требования к реализации
1. Структура проекта
- Использовать ту же архитектуру, что и в задании №12.
- Все файлы с логикой должны иметь расширение
.tsxили.ts. - Разделение на компоненты, хуки, утилиты и типы должно быть сохранено или улучшено.
2. Типизация данных
- Создать интерфейсы или типы для всех сущностей из ER-диаграммы:
UserPostCommentLikeFriendship
- Использовать эти типы во всех компонентах, хуках и утилитах.
- Все mock-данные должны быть импортированы с корректной типизацией (например, через
as constили явное указание типа).
3. Хуки и утилиты
- Все пользовательские хуки (
useAuth,usePosts,useCommentsи т.д.) должны быть полностью типизированы. - Функции-утилиты (поиск, фильтрация, обновление состояния) должны принимать и возвращать значения с чётко определёнными типами.
4. React Router
- Все маршруты и параметры (например,
userIdв URL) должны быть типизированы. - Использовать
useParams,useNavigateи другие хуки с учётом типов.
5. Состояние приложения
- Состояния (
useState,useReducer) должны иметь явно заданные типы. - Избегать использования
anyилиunknownбез веской причины.
6. Сохранение функциональности
- Всё, что работало в задании №12, должно работать и здесь:
- Авторизация/выход
- Просмотр постов, профилей, комментариев
- Создание/редактирование/удаление постов и комментариев
- Лайки, заявки в друзья, поиск
- Переключение темы (если была реализована)
- Страница 404
- При желании можно доработать то что не удалось в рамках №12 задания.
7. Ограничения
- Нужно минимально использовать
// @ts-ignoreили отключать проверки TypeScript без крайней необходимости. - Запрещено оставлять неявную типизацию (
implicit any). - Разрешено использовать только те библиотеки, которые уже были в проекте №12 (включая
react-router-dom).
Время на выполнение
2 практические сессии
- После сессии 1 дедлайн: 75% от максимального балла
- После сессии 2: 50%
- После сессии 3: 25%
- После сессии 3: 25%
Баллы
| Статус выполнения | Количество баллов |
|---|---|
| Не сдано | -10 |
| Полностью реализовано | 5-15 |
| Дополнительная часть | (пусто) |