首页 > 解决方案 > 如何设置字段以匹配 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?
}

标签: javascriptflowtype

解决方案


在这种情况下,您可以利用 $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


推荐阅读