在Flow中展平对象属性

时间:2018-08-31 14:58:49

标签: flowtype

我对Flow有一个看似简单的问题。

给出以下对象:

const input: InputObject = {
  key1: {
    prop1: 'value1',
  },
  key2: {
    prop2: 'value2',
    prop3: false,
  },
};

const output: OutputObject = {
  prop1: 'value1',
  prop2: 'value2',
  prop3: false,
};

如何基于OutputObject获取InputObject的类型?

type OutputObject = ??magic?? InputObject ??magic??;

上下文

我想输入一个React HOC组件,该组件将基于配置对象注入一些属性 ,例如:

type Props = {
  prop1: string,
  prop2: string,
  prop3: boolean,
};

class Component extends React.Component<Props> { /* */ }

Hoc({
  key1: () => ({
    prop1: 'value1',
  }),
  key2: () => ({
    prop2: 'value2',
    prop3: false,
  }),
})(Component);

我已经知道如何正确键入HOC以使其具有类型安全性,以及如何从传递给HOC的配置对象中获取InputObject,但我仍然坚持如何“展平” {{ 1}}类型更改为InputObject类型,这样OutputObject将会很高兴,因为它将从HOC获取所有必需的属性:)

更重要!我希望以下内容是类型错误:

<Component />

谢谢!

0 个答案:

没有答案