Перейти к основному содержимому
Об авторе
Проекты
Знания
Знания/TypeScript/utility-exclude-extract

Как работают `Exclude<T, U>` и `Extract<T, U>` и что такое дистрибутивность?

СобеседованиеУтилитарные типы
  • Exclude<T, U> = T extends U ? never : T — убирает из union T те типы, которые совместимы с U
  • Extract<T, U> = T extends U ? T : never — оставляет только совместимые с U
  • Дистрибутивность: условие применяется к каждому члену union отдельно
  • Пример: Exclude<"a" | "b" | "c", "a" | "c"> → "b"
  • NonNullable<T> = Exclude<T, null | undefined>
  • Работает только с «голым» типовым параметром (не обёрнутым в кортеж/массив)
  • Главная
  • Об авторе
  • Проекты
  • Знания
Логотип nKolmykov