Напиши тип Middle Базовые типы обновлено
Пересечение с конфликтом полей
Вопрос
Какой тип получит X? Впишите тип.
type C = { a: string } & { a: number };
type X = C['a']; // /* ? */
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: never. Пересечение объединяет требования: поле a должно быть одновременно string и number.
Правильный тип
never
Разбор
Пересечение объединяет требования: поле a должно быть одновременно string и number. Таких значений нет, поэтому string & number это never. Ошибки при объявлении нет, и в этом ловушка: в отличие от interface B extends A, пересечение молча делает конфликтное поле невыполнимым.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.