PassFront
  1. PassFront
  2. База знаний
  3. Utility Types

Что делают Partial, Required, Readonly и Pick в TypeScript?

Utility Types

Utility-типы — встроенные шаблоны, которые строят новые типы из существующих.

interface User {
  id: number;
  name: string;
  email?: string;
}

type A = Partial<User>;   // все поля необязательные
type B = Required<User>;  // все поля обязательные, email тоже
type C = Readonly<User>;  // поля нельзя менять
type D = Pick<User, 'id' | 'name'>; // только выбранные поля

Где используют

  • Partial<T> — данные для обновления: updateUser(id, patch: Partial<User>).
  • Readonly<T> — защита от случайных изменений состояния.
  • Pick<T, K> — маленькие версии больших типов для компонентов и DTO.
  • Required<T> — когда все поля после обработки заполнены.

Нюанс

Все они «мелкие»: работают только на верхнем уровне объекта. Для вложенных структур пишут рекурсивные варианты (DeepPartial).

Коротко для собеседования

Utility-типы избавляют от копирования интерфейсов: Partial делает поля необязательными, Readonly запрещает изменения, Pick берёт часть.

Другие вопросы раздела