2016-02-26 42 views
0

在下面打字稿編譯V1.7片斷下第三typeguard子句標識x作爲C1聯合類型推理變化

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下第三typeguard認爲x的作爲C2因此使編譯失敗。 它的意圖或錯誤?

回答