关于Flow,我有一个看似简单的问题 .
给出以下对象:
const input: InputObject = {
key1: {
prop1: 'value1',
},
key2: {
prop2: 'value2',
prop3: false,
},
};
const output: OutputObject = {
prop1: 'value1',
prop2: 'value2',
prop3: false,
};
如何根据 InputObject
获取 OutputObject
的类型?
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
但是我仍然坚持如何 InputObject
类型为 OutputObject
类型,以便 <Component />
将是很高兴,因为它将从HOC获得所有必需的属性:)
更重要的是!我希望以下是一个类型错误:
const HocComponent = Hoc({
key1: () => ({
prop1: 'value1',
}),
key2: () => ({
prop2: 'value2',
}),
})(Component);
<HocComponent /> // Error! prop3 is required
<HocComponent prop3={true} /> // Happy again
谢谢!