> Использовал ли ты mapped types в TypeScript (TypeScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Арго

Стек: TypeScript

> Пример ответа

Да, я активно использую mapped types. Это мощный инструмент для трансформации существующих типов без их дублирования. Например, чтобы сделать все поля объекта опциональными или только для чтения:

TYPESCRIPT
type Partial<T> = { [P in keyof T]?: T[P] };
type Readonly<T> = { readonly [P in keyof T]: T[P] };

На практике часто применяю для создания типов на основе API-ответов. Допустим, есть User из бэкенда, а для фронта нужен UserForm без id и с изменёнными типами полей:

TYPESCRIPT
type User = { id: number; name: string; email: string; role: 'admin' | 'user' };
type UserForm = { [K in Exclude<keyof User, 'id'>]: User[K] };
// { name: string; email: string; role: 'admin' | 'user' }

Также использую с условными типами - например, чтобы сделать все поля nullable для форм с валидацией:

TYPESCRIPT
type Nullable<T> = { [P in keyof T]: T[P] | null };

Это сокращает код, улучшает типовую безопасность и упрощает рефакторинг.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью