2016-08-30 65 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”,但这是不会改进您的实施。

相关问题