Напиши тип Middle Объединения и сужение обновлено
Тип в ветке else после in
Вопрос
Какой тип у v в ветке else? Впишите тип.
type Page = { items: string[] } | { total: number };
function f(v: Page) {
if ('items' in v) {
return v.items;
} else {
v; // v: /* ? */
}
}
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: { total: number }. Оператор in сужает объединение в обе стороны: в ветке if остаются варианты, где поле items объявлено, в else остальные.
Правильный тип
{ total: number }
Разбор
Оператор in сужает объединение в обе стороны: в ветке if остаются варианты, где поле items объявлено, в else остальные. Поле items есть только у первого варианта, поэтому в else остаётся { total: number }.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.