2016-09-29 16 views
0

我有一些像這樣的代碼:如何製作只能包含流中特定屬性的類型?

/* @flow */ 

type Options = { 
    userdir?: string, 
} 

function foo(options: Options) { 
    return 'foo'; 
} 

foo({userDir: 'bar'}); 

我預計,流將在這裏警告我,有我的選項類型沒有財產userDir。但根據流程類型檢查器,此代碼完全正常。我如何製作只能在流程中具有某些特性的類型?

回答

3

在你的代碼片段中,你聲明瞭一個可選屬性,所以Flow不會抱怨。

如果需要流量來告訴你有關丟失的財產,你需要刪除的問號:

type Options = { 
    userdir: string; 
}; 

如果你需要進行定義的屬性,也允許它爲空或未定義,您可以使用「也許類型」:

type Options = { 
    userdir: ?string; 
}; 

編輯:我們討論這個上Reactiflux,原來流量(截至0.32)剛剛添加確切類型S:

type Options = {| 
    userdir: ?string; 
|}; 

使用此語法,呼籲foo({userDir: 'bar'});流量會抱怨userDir屬性,它不會在上述定義存在時。

相關問題