Проверяет понимание роли mapper-функций при работе с API и умение правильно размещать их в архитектуре Feature-Sliced Design.
Mapper — это чистая функция, которая принимает данные в одном формате и возвращает их в другом. В контексте фронтенда чаще всего речь идёт о преобразовании DTO (Data Transfer Object), приходящего с бэкенда, в модель, удобную для использования в приложении. Это позволяет изолировать UI и бизнес-логику от изменений в API.
В Feature-Sliced Design mapper обычно кладут рядом с сущностью (entity), к которой он относится, например в entities/user/model/mappers.ts. Если маппер универсальный и не привязан к конкретной сущности, его место — в слое shared/lib. Иногда маппер размещают прямо в API-слое (shared/api), если он используется только там.
// entities/user/model/types.ts
export interface User { id: number; fullName: string; isActive: boolean; }
export interface UserDTO { id: number; first_name: string; last_name: string; status: string; }
// entities/user/model/mappers.ts
export const mapUser = (dto: UserDTO): User => ({
id: dto.id,
fullName: `${dto.first_name} ${dto.last_name}`,
isActive: dto.status === 'active',
});
Маппер вызывается сразу после получения данных из API, до попадания в стор или компонент. Так UI всегда работает с предсказуемой моделью, а не с полями вида first_name.
Итог: mapper стоит применять всегда, когда формат данных бэкенда отличается от удобного для фронтенда, а хранить его логичнее всего рядом с сущностью в FSD.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию