2017-02-17 80 views
1

我想知道如何將一個Object鑄造成Flow中用戶定義的精確類型。例如:是否可以在Flow中將對象轉換爲確切類型?

//@flow 

type exactType = {|x : number|} 

function test(a : Object) : exactType { 
    if(typeof(a.x) === 'string'){ 
    return (a : exactType); 
    } 
    throw new Error('Incorrect type!') 
} 

甚至可以寫這樣的函數嗎?即是否可以爲類型檢查器提供參數a只有一個字段,名稱爲x,類型爲number

回答

2

沒有安全的方法來做到這一點。但是,您可以隨時通過any投規避typechecker:

return ((a: any): exactType);

理想情況下,你會重構代碼,避免使用Object,因爲它是一個不安全的類型。但是,如果這是不可能的,你所能做的最好的就是小心翼翼地規避類似這樣的類型分析。

相關問題