我正在编写一个React应用,正在使用classnames来帮助我进行样式设计。
我像这样加入我的班级名:
const appBarClasses = classNames({
[classes.appBar]: true,
[classes[color]]: color,
[classes.fixed]: fixed
});
在我设置颜色TypeScript的行中抱怨:
[ts] Element implicitly has an 'any' type because type 'Record<"fixed" | "appBar" | "primary" | "transparent", string>' has no index signature.
我用as
或: string
尝试了无数种变体,但无法正常工作。如何告诉TSLint这是一个字符串?
编辑: 这是我获取课程的方法。我将material-ui用于组件,并使用了WithStyles函数。
import withStyles, { WithStyles } from "@material-ui/core/styles/withStyles";
import createStyles from "@material-ui/core/styles/createStyles";
export interface Props extends WithStyles<typeof styles> {
brand: string;
fixed: boolean;
changeColorOnScroll: { height: number; color: string };
color: string;
}
styles
是使用createStyles
创建的对象。
styles
的外观如下:
import createStyles from "@material-ui/core/styles/createStyles";
import { primaryColor } from "../../styles";
const navBarStyle = createStyles({
appBar: {
alignItems: "center",
backgroundColor: "#fff",
border: "0",
borderRadius: "3px",
boxShadow:
"0 4px 18px 0px rgba(0, 0, 0, 0.12), 0 7px 10px -5px rgba(0, 0, 0, 0.15)",
color: "#555",
display: "flex",
flexFlow: "row nowrap",
justifyContent: "flex-start",
marginBottom: "20px",
padding: "0.625rem 0",
position: "relative",
transition: "all 150ms ease 0s",
width: "100%"
},
fixed: {
position: "fixed"
},
primary: {
backgroundColor: primaryColor,
boxShadow:
"0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 12px -5px rgba(156, 39, 176, 0.46)",
color: "#FFFFFF"
},
transparent: {
backgroundColor: "transparent !important",
boxShadow: "none",
color: "#FFFFFF",
paddingTop: "25px"
}
});
export default navBarStyle;
答案 0 :(得分:0)
我成功了!
在props接口中,我必须这样定义color
:
color: "transparent" | "primary";