2016-08-30 95 views
3

我想創建一個代表2個字符ISO國家代碼的類型。有沒有簡單的方法來爲這些(或任何其他固定長度的項目)創建類型定義?如何在流程中創建一個固定長度類型

當然,一個辦法是用所有可能的人

type CountryCode = "AX" | "AL" | "DZ" | ... 

列表枚舉,但我喜歡簡單的東西,僅僅強制執行2字符字符串。我需要使用dynamic type tests

+0

不,這是不可能的 – vkurchatkin

回答

3

不,Flow沒有這樣的功能。它沒有任何其他類型的依賴類型特徵,其他可能包括單個值的類型。

你可以使用像if (countryCode.length === 2) { ... }測試,如你通常會在JS做,但流量不會細化countryCode類型的if塊內,因爲沒有流量類型來表示兩個字符的字符串。

相反,在實際動態測試,如if (countryCode !== null)流量就會知道countryCode不爲空if塊內,可以使用類型檢查的知識。

請注意,從技術上講,您可以生成一個類型,其中包含從A到Z大寫字母26 * 26 = 676的字符串:「AA」,「AB」,...,「ZY」,「ZZ」,但這是不會改進您的實施。

相關問題