Выбор ответа Junior Утилитарные типы спрашивают часто обновлено

Убрать член объединения

Вопрос

Как получить тип 'user' | 'guest' из Role?

type Role = 'admin' | 'user' | 'guest';

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Exclude<Role, 'admin'. Exclude работает с членами объединения: убирает те, что совместимы со вторым аргументом.

Варианты ответа

  1. NonNullable<Role>
  2. Omit<Role, 'admin'>
  3. Exclude<Role, 'admin'>правильный ответ
  4. Pick<Role, 'user' | 'guest'>

Разбор

Exclude работает с членами объединения: убирает те, что совместимы со вторым аргументом. Exclude<Role, 'admin'> даёт 'user' | 'guest'.

Omit и Pick работают с ключами объектного типа, для объединения строк они дадут тип с методами String, а не нужные литералы. NonNullable убирает только null и undefined.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.