【发布时间】:2017-12-28 21:52:00
【问题描述】:
在为material-ui 创建主题时,我添加了两个新的调色板选项,可以为我提供更好的明暗范围。我已经扩展了Theme 类型来表明这一点
import {Theme} from "material-ui/styles";
import {Palette} from "material-ui/styles/createPalette";
export interface ExtendedTheme extends Theme {
palette: ExtendedPalette
}
export interface ExtendedPalette extends Palette {
light: Color,
dark: Color,
}
当我尝试在 WithStyles 渲染助手中使用这些附加选项时会出现问题
const styles = (theme : ExtendedTheme) => ({ root: {color: theme.light['100'] }});
export interface MyProps {classes: {[index: string] : string}};
const MyComponent = (props : MyProps) => {...};
// Type ExtendedTheme is not assignable to Theme
export default withStyles(styles : StyleRulesCallback)(MyComponent);
从功能上讲,我的代码在纯 javascript 中运行良好,但由于类型不同,它会引发错误。 material-ui 的类型期望 Theme 类型是样式回调函数的唯一参数:
export type StyleRulesCallback<ClassKey extends string = string> = (theme: Theme) => StyleRules<ClassKey>;
我认为扩展接口将以多态方式工作,以便ExtendedTheme 将实现Theme
【问题讨论】:
标签: javascript typescript material-ui