Напиши тип Middle Объединения и сужение обновлено
keyof от объединения объектов
Вопрос
Какой тип получится? Впишите тип.
type A = { a: 1; b: 2 };
type B = { a: 3; c: 4 };
type K = keyof (A | B); // /* ? */
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: 'a'. keyof объединения даёт только общие ключи: значение типа A B гарантированно имеет лишь a.
Правильный тип
'a'
Разбор
keyof объединения даёт только общие ключи: значение типа A | B гарантированно имеет лишь a. Для пересечения наоборот: keyof (A & B) это 'a' | 'b' | 'c'. Отсюда правило: у union можно читать только общие поля без сужения.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.