如何设置字段以匹配Flowjs中数组的值?

问题描述 投票:0回答:1

给出一些冻结的数组对象,该对象旨在表示表单字段的可能值。

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?
}
javascript flowtype
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.