3
我想创建一个代表2个字符ISO国家代码的类型。有没有简单的方法来为这些(或任何其他固定长度的项目)创建类型定义?如何在流程中创建一个固定长度类型
当然,一个办法是用所有可能的人
type CountryCode = "AX" | "AL" | "DZ" | ...
列表枚举,但我喜欢简单的东西,仅仅强制执行2字符字符串。我需要使用dynamic type tests?
我想创建一个代表2个字符ISO国家代码的类型。有没有简单的方法来为这些(或任何其他固定长度的项目)创建类型定义?如何在流程中创建一个固定长度类型
当然,一个办法是用所有可能的人
type CountryCode = "AX" | "AL" | "DZ" | ...
列表枚举,但我喜欢简单的东西,仅仅强制执行2字符字符串。我需要使用dynamic type tests?
不,Flow没有这样的功能。它没有任何其他类型的依赖类型特征,其他可能包括单个值的类型。
你可以使用像if (countryCode.length === 2) { ... }
测试,如你通常会在JS做,但流量不会细化countryCode
类型的if
块内,因为没有流量类型来表示两个字符的字符串。
相反,在实际动态型测试,如if (countryCode !== null)
流量就会知道countryCode
不为空if块内,可以使用类型检查的知识。
请注意,从技术上讲,您可以生成一个类型,其中包含从A到Z大写字母26 * 26 = 676的字符串:“AA”,“AB”,...,“ZY”,“ZZ”,但这是不会改进您的实施。
不,这是不可能的 – vkurchatkin