流类型命名类型

时间:2018-06-26 19:30:59

标签: javascript flowtype

是否有一种在运行时将流类型的名称获取为字符串的方法?如果没有,还有其他方法可以解决此问题:

我想创建一个通用类型,但是切换它是哪种类型。例如,我有一个这样的FormField类型

ggplot

但是,我想根据类型进行逻辑运算。例如,如果它是一个字符串字段,则渲染一个文本字段。如果它是布尔值字段,则呈现一个复选框。现在,我的解决方案是使多个类型如下:

type FormField<T> = {
  label: string,
  required: boolean,
  value?: T,
  status?: ValidationStatus,
  touched?: boolean,
  validate?: (T, FormData) => boolean
}

然后切换type TextFormField = { type: 'text', label: string, required: boolean, value?: string, status?: ValidationStatus, touched?: boolean, validate?: (string, FormData) => boolean } type BoolFormField = { type: 'bool', label: string, required: boolean, value?: boolean, status?: ValidationStatus, touched?: boolean, validate?: (boolean, FormData) => boolean } type FormField = TextFormField | BoolFormField 字段。但是,这导致很多复制粘贴和其他丑陋行为。有没有更优雅的方式来解决这个问题? (我无法切换type,因为它可能是typeof value,而且我不希望如果输入的值设置为奇怪的值,则页面的呈现方式也会发生变化。

0 个答案:

没有答案