Я нашел случай, когда типы типов шрифтов и анализ потока ведут себя неожиданно. Я стесняюсь называть это ошибкой, я не знаю, как это предположительно для работы. По моему опыту, обычно это просто волшебным образом делает то, что я хочу.Анализ потока типа машинописного текста
class Parent { }
class Child extends Parent {
other: Child;
}
let x: Parent = null;
if (x instanceof Child) {
x = x.other;
x = x.other; // this line gives a compilation error
}
Вы можете попробовать это на Typescript Playground. Сообщенная ошибка компиляции для меня не имеет смысла.
Свойство «другое» не существует в типе «Родитель».
Я бы предположил, что внутри блока if
, что x
набирается в Child
. Почему это происходит? Есть ли достойное решение?
вы говорите, что «правая сторона' x' рассматривается как 'Parent'». Если бы это было так, первое назначение было бы ошибкой компиляции, а не второй. – recursive
Извините, это опечатка .. Я имею в виду левую сторону – s976