Typescript总是抱怨调色板中缺少某些属性。如果添加//@ts- ignore
,我的应用程序运行正常,但显然我想避免这种情况。我是Typescript的新手,这是我尝试过的。
import createMuiTheme, { ThemeOptions, Theme } from '@material-ui/core/styles/createMuiTheme';
import { PaletteOptions } from '@material-ui/core/styles/createPalette';
interface IPaletteOptions extends PaletteOptions {
chip: {
color: string,
expandIcon: {
background: string,
color: string,
},
},
}
interface ITheme extends Theme {
palette: IPaletteOptions,
}
const theme: ITheme = createMuiTheme({
typography: {
fontWeightMedium: 600,
fontFamily: ['Open Sans', 'Arial', 'sans-serif'].join(','),
},
palette: {
primary: {
main: '#43C099',
},
secondary: {
main: '#7AF3CA',
},
chip: {
color: '#C2C3C6',
expandIcon: {
background: '#808183',
color: '#FFFFFF',
},
},
},
} as ThemeOptions);
这会引发错误,
Type 'Theme' is not assignable to type 'ITheme'.
Types of property 'palette' are incompatible.
Property 'chip' is missing in type 'Palette' but required in type 'IPaletteOptions
对我来说这是一个令人困惑的错误,因为类型I不在Palette
任何地方使用该类型。
如何在此处适当扩展调色板?
import createMuiTheme, { Theme, ThemeOptions } from "@material-ui/core/styles/createMuiTheme";
import { Palette } from "@material-ui/core/styles/createPalette";
interface IPalette extends Palette {
xxx: {}
}
interface ITheme extends Theme {
palette: IPalette;
}
interface IThemeOptions extends ThemeOptions {
palette: IPalette;
}
const theme = createMuiTheme({
palette: {
...
xxx: {} // Type been checked
}
} as IThemeOptions) // Use customized ThemeOptions type
const useStyles = makeStyles((theme: ITheme) => ({ // Use customized Theme type
root: {
color: theme.palette.xxx // Work with no type error
}
}));
如果我们看一下createMuiTheme.d.ts
import { Palette, PaletteOptions } from './createPalette';
export interface ThemeOptions {
palette?: PaletteOptions;
...
}
export interface Theme {
palette: Palette;
...
}
export default function createMuiTheme(options?: ThemeOptions, ...args: object[]): Theme;
我们会发现这一点,Theme
并ThemeOptions
发挥不同的作用。
我想使用打字稿从材料-用户界面扩展按钮组件的道具,以便能够将额外的道具传递给它的孩子。 我尝试在中添加以下声明。/app/types/material_ui.d.ts: 这将引发错误“TS2693:'Button'仅引用一种类型,但在此处用作值。 我也试过声明: 这将引发错误“TS2323:无法重新声明导出的变量'按钮'”。 我的tsconfig.json是这样的: 最后是来自Menty-UI的原
问题内容: 我正在尝试添加一个属性以使用Typescript从中间件表达请求对象。但是我不知道如何向对象添加额外的属性。如果可能的话,我宁愿不使用括号符号。 我正在寻找一种解决方案,允许我编写与此类似的内容(如果可能): 问题答案: 您想要创建一个自定义定义,并在Typescript中使用一个称为声明合并的功能。这是常用的,例如在中。 创建一个文件,并确保将其包含在您的-部分中(如果有)。内容如下
我试图创建一个树选择组件,就像一个从antd树选择使用材料UI。我有一个material-ui、TextField和TreeView组件,一个在另一个下面。最初,我希望树视图被折叠,用户应该能够手动展开它。但是当用户在文本字段中键入一些文本时,我希望具有类似文本的节点被展开。我有代码在树中搜索文本,并获得匹配节点的节点ID。有一个名为的道具,它允许我们设置需要展开的节点ID列表。请参见下面的代码。
我想使用材料-UI Next文本字段道具链接,道具类型是。前一个版本的材料UI道具名称是,道具类型是链接。 以前的版本使用道具: 在先前版本的Material UI中使用,代码可以很好地显示错误状态。 Textfield材质界面下一步使用
问题内容: 我正在尝试一些非常简单的方法:使用Material-UI主题为网站构建两个主题: 一个主题和一个主题,但效果不佳:该主题位于每个Material-UI react元素上,但是html文档上的root元素仍具有相同的默认白色背景。 当然,可以通过使用纯.css攻击身体来更改它: 但是我一直想用React动态地更改它,尽管这可以工作,但是不能: 而且我在这里迷路了,有没有办法用Materi
如果发现 Cocos Creator 内置的界面元素仍然满足不了你的需求,也不必太担心,你可以通过自定义元素 来对 UI Kit 进行扩展。 UI Kit 的扩展是基于 HTML5 的 Custom Elements 标准。 通过 Editor.UI.registerElement(tagName, prototype) 我们可以很轻松的注册自定义元素。这里 有一个简单的范例。 Editor.UI