Предположим, что у меня есть два интерфейса:
interface Box {
x: number
y: number
}
и
interface ColouredBox {
x: number
y: number
colour: string
}
Предположим, что для целей этого вопроса я не могу изменить интерфейсы.
Теперь, когда я создаю объекты, у меня есть такой код:
let a: Box|ColouredBox = {x: 1, y: 2}
if( something ){
a.colour = "Blue" // Compilation Error
}
Я получаю эту ошибку на a.colour = "Blue"
:
Error:(24, 26) TS2339: Property 'colour' does not exist on type 'Box'.
Почему? Это ограничение компилятора TS? Кроме полной реконструкции объекта, есть ли другой рабочий процесс, который я мог бы использовать?