Back to questions
Middle
2
Как часто приходилось работать с дженериками? Где использовал утилитные типы: Pick, Omit, Partial, Record, ReturnType, Exclude?
Companies where asked
UserGate
Answer from AI
sobes.tech AI
Дженерики и утилитные типы в TypeScript позволяют создавать гибкие и переиспользуемые типы, что значительно улучшает качество и безопасность кода.
Опыт использования:
- Дженерики часто применяю при написании компонентов React, чтобы типизировать пропсы с разными типами данных.
- Утилитные типы использую для трансформации типов без дублирования кода.
Примеры использования утилитных типов:
Pick<T, K>— выбирает из типа T только свойства K. Например, для создания типа с частью полей интерфейса.Omit<T, K>— наоборот, исключает свойства K из типа T.Partial<T>— делает все свойства типа T необязательными, удобно для обновления объектов.Record<K, T>— создает объект с ключами K и значениями типа T, полезно для маппинга.ReturnType<T>— извлекает тип возвращаемого значения функции T.Exclude<T, U>— исключает из типа T все типы, которые совместимы с U.
Пример:
interface User {
id: number;
name: string;
email: string;
}
// Создаем тип с только id и name
type UserPreview = Pick<User, 'id' | 'name'>;
// Тип с необязательными полями для обновления
type UserUpdate = Partial<User>;
// Функция, возвращающая User
function getUser(): User {
return { id: 1, name: 'Alice', email: 'alice@example.com' };
}
// Тип возвращаемого значения функции
type UserType = ReturnType<typeof getUser>;