TypeScript对象和键推断

时间:2019-03-13 17:22:23

标签: reactjs typescript mobx

我尝试构建一个通用组件,该组件接受三个参数:  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 | );

0 个答案:

没有答案