我尝试将defaultProps
添加到MyComponent
,然后将其连接到redux。为此,我使用Partial<MyComponentProps>
作为defaultProps
类型。但是,Typescript抱怨
属性类型
bar
在Partial<MyComponentProps>
中是可选的,但在{ bar: number }
中是必需的。
我想弄清楚为什么会这样,以及一个好的解决方案。 这是代码:
interface MyComponentProps {
foo: string;
bar: number;
}
class MyComponent extends React.PureComponent<MyComponentProps, void> {
public static defaultProps: Partial<MyComponentProps> = {
foo: "hello"
};
public render() {
return null;
}
}
function mapStateToProps(state: any) {
return {
bar: 7
};
}
connect(mapStateToProps)(MyComponent);
Typescript在MyComponent
connect(mapStateToProps)(MyComponent);
部分抱怨
将defaultProps
投射到MyComponentProps
,或者mapStateToProps(state: any): Partial<MyComponentProps>
都可以投放,但这似乎应该是开箱即用的。 defaultProps
是官方的React模式。