2017-06-29 21 views
1

是否可以根據條件在流中鍵入變量?類似這樣的:流程中的條件類型

const type = 'xyz'; 
const a: (type === 'xyz') ? number : string; 
+1

不,它不是。這是一個非常奇怪的要求。你希望能用這個來實現什麼? –

+0

我有兩個相當複雜的類型。根據一些函數參數,變量是一個或另一個。但我想我只能用兩者的聯盟來代替。 – Kiechlus

回答

2

簡短的回答是否定的。變量必須綁定到單個類型,其中可以包含類似number | string的聯合類型。在條件塊內部流可以推斷出更專門化的類型。例如:

const a: number | string = "foo"; 
if(typeof a === "string"){ 
    a.split(); // OK! 
} else { 
    a.split(); // Error! a is a number 
} 

但要注意的是,這些條件分支是靜態的,它在編譯時是什麼類型將是內部的各個保障。