Выбор ответа Senior Условные и mapped-типы обновлено
Как отключить распределение условного типа
Вопрос
Нужен тип IsUnion<T>, но условный тип распределяется по объединению. Какой приём отключает распределение?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Обернуть обе стороны в кортеж: [T] extends [U] ? ... : ... Распределение происходит, только когда слева от extends стоит «голый» параметр типа. [T] уже не голый параметр, и union проверяется целиком. as const относится к значениям, infer без extends не существует, а ограничение параметра на…
Варианты ответа
- Обернуть обе стороны в кортеж:
[T] extends [U] ? ... : ...правильный ответ - Добавить
as constк параметру типа, чтобы он не расширялся - Использовать
inferвместоextendsв проверке объединения - Объявить параметр как
T extends unknownв объявлении типа
Разбор
Распределение происходит, только когда слева от extends стоит «голый» параметр типа. [T] уже не голый параметр, и union проверяется целиком. as const относится к значениям, infer без extends не существует, а ограничение параметра на распределение не влияет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.