我尝试构建一个通用组件,该组件接受三个参数: 1. MobX商店中的可观察对象。 2.连接到同一商店的“ onChange”回调。 3.作为最后一个键-路径字符串,它是参数1的键之一
之所以存在此组件,是为了允许轻松使用商店,例如:
<StoreInput path="email" />
该组件运行良好,但是现在我尝试将“路径”的类型强制为对象键之一(以及onChange参数的键)之一-但到目前为止,我从TypeScript中遇到了编译器错误。
任何帮助将不胜感激。
type objectType = { [key: string]: string };
type changeType<O> = {
[x in keyof O]: string
}
const createStoreInput = <T extends objectType>(objecyComputed: IComputedValue<T>) => (onChange: (change: changeType<T>) => void) =>
observer(({ path }: { path: keyof T }) => {
const currentValue = objecyComputed.get()[path];
return (
<InputRow
value={currentValue}
onChange={newValue => {
const change = { [path]: newValue };
onChange(change);
}}
/>
);
});
TypeScript错误:类型'{[x:string]:string; }”不能分配给类型“ changeType”的参数。 TS2345
50 | onChange={newValue => {
51 | const change = { [path]: newValue };
52 | onChange(change); | ^ 53 | }} 54 | /> 55 | );