【发布时间】:2019-04-23 04:46:09
【问题描述】:
我在typescript 中使用material-ui 的反应应用程序。 material-ui 提供 withStyles,它通过类名注入到组件中。但我不知道如何声明它的类型。下面是一个示例代码:
import * as React from 'react';
import Grid from '@material-ui/core/Grid';
import { withStyles, createStyles } from '@material-ui/core/styles';
const BackgroundPanelStyles = createStyles({
root: {
height: '16rem',
}
});
const BackgroundPanelComponent = ({classes}: {classes: typeof BackgroundPanelStyles}) => {
return (
<Grid container className={classes.root}>
</Grid>
)
};
export const BackgroundPanel = withStyles(BackgroundPanelStyles)(BackgroundPanelComponent);
我在BackgroundPanelStyles 对象中定义了样式并将其用作组件属性类型。但我得到了以下错误。在 typescript 中定义属性类型的正确方法是什么?
Argument of type '({ classes }: { classes: Record<"root", CSSProperties>; }) => Element' is not assignable to parameter of type 'ComponentType<ConsistentWith<{ classes: Record<"root", CSSProperties>; }, { classes: Record<"root", string>; }>>'.
Type '({ classes }: { classes: Record<"root", CSSProperties>; }) => Element' is not assignable to type 'FunctionComponent<ConsistentWith<{ classes: Record<"root", CSSProperties>; }, { classes: Record<"root", string>; }>>'.
Types of parameters '__0' and 'props' are incompatible.
Type 'ConsistentWith<{ classes: Record<"root", CSSProperties>; }, { classes: Record<"root", string>; }> & { children?: ReactNode; }' is not assignable to type '{ classes: Record<"root", CSSProperties>; }'.
Types of property 'classes' are incompatible.
Type 'Record<"root", string>' is not assignable to type 'Record<"root", CSSProperties>'.
Types of property 'root' are incompatible.
Type 'string' is not assignable to type 'CSSProperties'.
【问题讨论】:
标签: reactjs typescript material-ui