Напиши тип 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 ошибок.