В фрагменте ниже машинопись компилятор v1.7 идентифицирует й, как в соответствии с п С1 третьего typeguardобъединения изменение типа логического вывода между v1.7 и v1.8
class C1 { item: string }
class C2 { item: string[] }
class C3 { item: string }
function Foo(x: C1 | C2 | C3): string {
if (x instanceof C1)
return x.item;
else if (x instanceof C2)
return x.item[0];
else if (x instanceof C3)
//in v1.7 compiler thinks x is C1
//in v1.8 compiler thinks x is C2
return x.item;
}
V1.8 думает о й, как С2 в соответствии с третьей typeguard поэтому что приводит к сбою компиляции. Это намечено или ошибка?