我想创建一个表示 2 个字符的 ISO 国家/地区代码的类型。有没有一种简单的方法来为这些(或任何其他固定长度的项目)创建类型定义?
当然,一种方法是枚举所有可能的列表
type CountryCode = "AX" | "AL" | "DZ" | ...
Run Code Online (Sandbox Code Playgroud)
但我喜欢更简单的东西,它只强制执行 2 个字符的字符串。
我需要使用动态类型测试吗?
不,Flow 没有这样的功能。它实际上没有任何依赖类型特征,其他类型可能包含单独的值。
您可以像通常在 JS 中那样使用测试,但 Flow 不会细化块内部if (countryCode.length === 2) { ... }的类型,因为没有 Flow 类型来表示两个字符的字符串。countryCodeif
相比之下,像 Flow 这样的实际动态类型测试if (countryCode !== null)将知道countryCodeif 块内的 'not null',并且可以使用该知识进行类型检查。
请注意,从技术上讲,您可以生成一个包含 26*26=676 个从 A 到 Z 的大写字符串的类型:“AA”、“AB”、...、“ZY”、“ZZ”,但这并没有比你的实施。
| 归档时间: |
|
| 查看次数: |
473 次 |
| 最近记录: |