Возник такой вопрос, при использовании union типа присваиваемый объект должен быть либо type1, либо type2. Данный объект очевидно не может быть присвоен type1, так как не хватает свойтва b, однако, если предположить, что он type2, то тут также есть лишнее свойство, то есть также должна быть ошибка при присвоении объектного литерала. Однако тс не считает это ошибкой. Почему так?
type type1 = {
a: number;
b: number;
};
type type2 = {
c: number;
};
type type3 = type1 | type2;
const test1: type3 = { // Тут должна быть ошибка
a: 111,
c: 222,
};
test1.a // При этом работает все корректно. Обратиться к переменным в таком случае нельзя
Это баг ts или я что-то не понимаю?