面试题答案
一键面试设计思路
- 定义基础通用属性类型:首先定义一个包含通用属性(如是否必填、提示信息)的类型,以便其他具体表单字段类型能复用这些通用属性。
- 定义具体表单字段类型:分别为文本框、下拉框等表单字段定义其特定的类型。
- 使用交叉类型:将通用属性类型与具体表单字段类型通过交叉类型结合,使得每个具体表单字段类型都具备通用属性。
- 使用联合类型:把所有结合后的具体表单字段类型通过联合类型组合起来,这样组件就能接收多种表单字段类型的配置。
代码实现
// 通用属性类型
type FormFieldCommonProps = {
required: boolean;
tip: string;
};
// 文本框类型
type TextField = {
type: 'text';
value: string;
} & FormFieldCommonProps;
// 下拉框类型
type SelectField = {
type:'select';
options: string[];
} & FormFieldCommonProps;
// 联合类型,组件接收的数据类型
type FormFieldConfig = TextField | SelectField;
在上述代码中,FormFieldCommonProps
定义了通用属性。TextField
和 SelectField
分别是文本框和下拉框的类型,通过交叉类型 &
结合了通用属性。最后,FormFieldConfig
使用联合类型 |
将 TextField
和 SelectField
组合起来,满足组件接收多种表单字段类型配置的需求。