> Что такое utility types в TypeScript, например Partial и DeepPartial (TypeScript)

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

Компании: Иннотех, Инрэко, Soft_Media_Group, DigitalSail, Арго

Стек: TypeScript

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

Utility types в TypeScript - это встроенные обобщённые типы, которые позволяют трансформировать существующие типы, создавая на их основе новые с изменёнными свойствами. Они помогают избежать дублирования кода и упрощают работу с типами.

Partial<T> делает все поля типа T необязательными. Например:

TYPESCRIPT
interface User {
name: string;
age: number;
}
type PartialUser = Partial<User>; // { name?: string; age?: number; }

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

DeepPartial<T> - это не встроенный, а пользовательский рекурсивный тип, который делает необязательными все вложенные поля. Реализуется так:

TYPESCRIPT
type DeepPartial<T> = {
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
};

Пример:

TYPESCRIPT
interface Config {
server: { host: string; port: number };
}
type DeepPartialConfig = DeepPartial<Config>;
// { server?: { host?: string; port?: number } }

DeepPartial удобен для работы с глубоко вложенными структурами, например, при частичном обновлении конфигурации или ответов API.

Другие популярные utility types: Required<T>, Readonly<T>, Pick<T, K>, Omit<T, K>, Record<K, T>.

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

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