Material UI v4扩展PaletteColorOptions添加自定义字段报错如何解决
解决方案
你之前的写法失效是因为MUI v4的相关类型在createPalette和createMuiTheme两个模块中都有导出,需要同时覆盖扩充,且PaletteColorOptions是类型别名不支持直接合并,只需扩充它的联合成员SimplePaletteColorOptions即可,操作如下:
1. 创建声明文件
在src目录下新建mui-augment.d.ts,确保该文件在tsconfig.json的include配置覆盖范围内。
2. 写入扩充内容
declare module '@material-ui/core/styles/createPalette' { interface SimplePaletteColorOptions { darker?: string; } interface PaletteColor { darker?: string; } } declare module '@material-ui/core/styles/createMuiTheme' { interface SimplePaletteColorOptions { darker?: string; } interface PaletteColor { darker?: string; } }
3. 可选兼容处理
如果仍有多余属性报错,在定义调色板时添加类型断言触发收窄:
import { createMuiTheme, SimplePaletteColorOptions } from '@material-ui/core/styles'; const theme = createMuiTheme({ palette: { primary: { main: '#1976d2', dark: '#1565c0', darker: '#0a3d62', contrastText: '#fff' } as SimplePaletteColorOptions } });
验证方式:调用theme.palette.primary.darker无类型报错即为生效。
内容的提问来源于stack exchange,提问作者Liran H
相关产品推荐
相关产品推荐

