flowtype - 如何在流中创建定长类型

标签 flowtype

我想创建一个表示 2 个字符的 ISO 国家/地区代码的类型。有没有一种简单的方法来为这些(或任何其他固定长度的项目)创建类型定义?

当然,一种方法是枚举所有可能的列表

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

但我喜欢更简单的东西,它只强制执行 2 个字符的字符串。

我是否需要使用 dynamic type tests ?

最佳答案

不,Flow 没有这样的功能。它实际上没有任何依赖类型的特性,其他可能包含单个值的类型。

您可以使用类似 if (countryCode.length === 2) { ... } 的测试就像您通常在 JS 中所做的那样,但 Flow 不会细化 countryCode 的类型内if块,因为没有 Flow 类型来表示两个字符的字符串。

相比之下,实际动态类型测试如 if (countryCode !== null)流会知道countryCode在 if 块内不为空,并且可以使用该知识进行类型检查。

请注意,从技术上讲,您可以生成包含从 A 到 Z 的 26*26=676 个大写字符字符串的类型:“AA”、“AB”、...、“ZY”、“ZZ”,但这并不是对你的实现。

关于flowtype - 如何在流中创建定长类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39236207/

相关文章:

javascript - 如何定义流日志输出文件

react-native - Flow Promise 此类型与 undefined undefined 不兼容

flowtype - 注释 ref 回调

javascript - Flow react native导入图片报错cannot resolve module RelativeImageStub

javascript - JavaScript 中的 <T> 是做什么用的?

javascript - 简单构造函数中的流类型错误

javascript - 流类型操作确实适用于对象引用

javascript - 如何在 React.CreateClass 中为对象属性提供流类型提示

javascript - Flow - 通过 props 传递的渲染组件

flowtype - 停止所有 Flow 服务器