是否有一种在运行时将流类型的名称获取为字符串的方法?如果没有,还有其他方法可以解决此问题:
我想创建一个通用类型,但是切换它是哪种类型。例如,我有一个这样的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
,而且我不希望如果输入的值设置为奇怪的值,则页面的呈现方式也会发生变化。