javascript - 如何设置字段以匹配 Flowjs 中的数组值?
问题描述
给定一些冻结的数组对象,用于表示表单字段的可能值。
const FROZEN_LIST = Object.freeze(['Value1', 'Value2', 'Value3'])
如何将表单对象定义设置为仅接受在此数组中为 Flow.js 中的此字段键定义的可能值?
// @flow
import {FROZEN_LIST} from (...)
type FormData = {
fieldKey: Array<string>, // this is not desirable because I want it to be more specific.
fieldKey: typeof FROZEN_LIST // is this how its done?
}
解决方案
在这种情况下,您可以利用 $Keys 运算符。$密钥
在你的情况下:
// @flow
import {FROZEN_LIST} from (...)
type FormData = {
fieldKey: $Keys<typeof FROZEN_LIST.reduce((r,i)=>({...r,...{[i]:i}}), {})>
}
让我知道它是否有效。
如果你能改变原来的会更好FROEZEN_LIST
:
const FROZEN_LIST = Object.freeze({'Value1':'Value1', 'Value2',:'Value2', 'Value3':'Value3'})
// @flow
import {FROZEN_LIST} from (...)
type FormData = {
fieldKey: $Keys<typeof FROZEN_LIST>
}
您也可以按照以下说明操作:Union from array literal
推荐阅读
- architecture - 设置初始雪花环境的最佳实践 - 多个 URL
- ruby-on-rails - 使用 AWS ECS 时如何轻松访问 docker 容器?
- python - 如何使用 Python docutils 创建简单的 html 标签
- javascript - 如何在 Javascript 中正确设置 Cassandra 客户端?
- python - Python import Pillow/PIL 错误,不能 ImportError: cannot import name '_imaging'
- html - 为什么有这么多的文本从 flexbox 对齐的内容中溢出?
- html - 如何使用 R 从 url 列表中抓取新闻故事?
- tree - ZingChart 树模块中的控制工具提示和节点颜色
- android-studio - Android将ImageView中的图像设置为底部中心
- java - 使用从蓝牙模块读取的数据更新 TextView