我正在尝试使用fieldDefinitions交叉引用字段ID,然后在验证程序中对其进行检查。但是,由于它们是字符串,所以很容易出错,是否有办法确保字典类型与其键之间的1:1安全映射?不同的组件可能具有不同的字段。
type FieldDefinition = {
[key: string]: string[]
};
然后我定义我的界面,并在我的自定义表单验证器中签入
const myField: FieldDefinition = {
address: ['some_type'],
city: ['some_type']
}
带有使用这些值的功能组件的示例
const ExampleForm: FC = () => {
return(
<Form formId='someid'>
<TextInput fieldId='address' />
<TextInput fieldId='city' />
<Form/>
);
}
问题源于以下事实:类型定义为string [],可以是任何东西,字段ID的使用方式如下:
if (formData !== undefined) {
formData.fieldDefinition[payload.value.key] = [
...payload.value.value
];
}
}
TL; DR 我该如何定义fieldid,使它们成为字典类型(键),但编码方式使我可以在编译时检查它们的有效性。
答案 0 :(得分:0)
我已经解决了我的答案
export interface DefaultProps<K extends object> {
formId: keyof K;
}
这是一个检查密钥的工作示例 https://codesandbox.io/s/vigilant-tharp-z9xkv 这是工厂的版本 https://codesandbox.io/s/stoic-ellis-e2w1o