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

Утилітний тип exclude у TypeScript

Exclude — це утиліта типу в TypeScript, яка дозволяє виключати конкретні підтипи з типу union. Вона створює новий union, видаляючи члени, які можуть бути присвоєні іншому типу.


Синтаксис

ts
Exclude<T, U>
  • T — оригінальний тип union.
  • U — підтипи (або union підтипів), які потрібно видалити з T.

Таким чином, Exclude<T, U> видаляє з T всі підтипи, які можуть бути присвоєні U, залишаючи лише несумісні.


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

  1. Очищення типів: видалення null та undefined, щоб уникнути зайвих перевірок.
  2. Фільтрація необов'язкових полів: коли потрібно зберегти лише певні варіанти в типі union.
  3. Робота з даними API: виключення небажаних значень з можливих відповідей сервера.
  4. Оптимізація типів: зменшення кількості можливих варіантів для зручності використання.

Приклади

Приклад 1. Виключення типів з union

ts
type Mixed = string | number | boolean; // Видалити числа та булеві значення type OnlyStrings = Exclude<Mixed, number | boolean>; // OnlyStrings = string
  • У нас є тип union Mixed = string | number | boolean.
  • Exclude<Mixed, number | boolean> залишає лише ті типи в Mixed, які не можуть бути присвоєні number | boolean.
  • Результат — string.

Приклад 2. Виключення null та undefined

ts
type APIResponse = "success" | "error" | null | undefined; // Видалити null та undefined, залишивши лише дійсні статуси type ValidResponse = Exclude<APIResponse, null | undefined>; function handleResponse(status: ValidResponse) { console.log(`Received response: ${status}`); } handleResponse("success"); // ✅ Ok handleResponse("error"); // ✅ Ok handleResponse(null); // ❌ Помилка компіляції
  • Якщо у нас є тип, який включає null та undefined, використовуючи Exclude, ми можемо їх видалити.
  • Аналогічний підхід — використання утиліти NonNullable.

Відмінність від Extract

УтилітаОпис
Exclude<T, U>Виключає всі підтипи з T, які сумісні з U
Extract<T, U>Залишає лише підтипи з T, які сумісні з U
ts
type Mixed = string | number | boolean; type OnlyNumbersOrBooleans = Extract<Mixed, number | boolean>; // number | boolean type OnlyStrings = Exclude<Mixed, number | boolean>; // string

Підсумок

  • Exclude спрощує управління складними типами union, дозволяючи виключати непотрібні варіанти.
  • Допомагає "очистити" тип, якщо потрібно працювати лише з конкретною групою підтипів.
  • Поєднується з утилітами Extract, NonNullable тощо для тоншого налаштування та фільтрації типів.

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

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

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

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