Skip to main content
Практика завдань

Обов'язковий тип утиліти в TypeScript

Required — це утилітний тип у TypeScript, який робить всі пропси типу обов'язковими, якщо вони були необов'язковими. Під час роботи з об'єктами, де деякі поля можуть не завжди бути заповнені, Required забезпечує сувору вимогу до всіх властивостей на певному етапі розробки або в певному контексті.

Синтаксис

ts
Required<T>
  • T — оригінальний тип, пропси якого ви хочете зробити обов'язковими.

Тип Required перетворює кожну властивість T на обов'язкову, видаляючи знак питання ?. Це особливо корисно, коли після валідації або додаткової обробки даних ви впевнені, що об'єкти повинні містити всі поля.

Коли використовувати Required?

  • Якщо вам потрібно гарантувати, що об'єкт має всі пропси.
  • Коли потрібно заповнити необов'язкові поля перед відправкою даних.
  • У функціях, які вимагають повний об'єкт без undefined.

Приклади використання Required

Перетворення необов'язкових властивостей на обов'язкові:

Припустимо, у нас є інтерфейс User з кількома полями, деякі з яких можуть бути відсутніми:

ts
interface User { id: number; name: string; age?: number; address?: string; } type RequiredUser = Required<User>; const user: RequiredUser = { id: 1, name: "Alice", age: 30, address: "Wonderland Ave", };
  • User — це оригінальний інтерфейс, де поля age та address можуть не бути встановленими.
  • RequiredUser перетворює всі поля (включаючи age та address) на обов'язкові.
  • Коли ви намагаєтеся пропустити будь-яке з полів age або address, TypeScript викине помилку, вимагаючи їх обов'язкової специфікації.

Використання Required для пост-валідації:

Часто спочатку ви описуєте дані як Partial<User> (або з необов'язковими полями), збираючи їх частинами, а потім після валідації хочете отримати "повну" версію типу, де поля гарантовано існують:

ts
function createUserData(data: Partial<User>): Required<User> { // ... Виконати валідацію та заповнити відсутні поля return { id: data.id ?? 0, name: data.name ?? "Unknown", age: data.age ?? 0, address: data.address ?? "Unknown", }; } const partialUser: Partial<User> = { name: "Bob" }; const fullUser: Required<User> = createUserData(partialUser); // fullUser має всі обов'язкові поля (id, name, age, address)

У цій ситуації після виконання перевірок і заповнення значень функція повертає об'єкт типу Required<User>, де всі поля тепер є обов'язковими.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань