【问题标题】:Add property to background prop in createMuiTheme in Material-UI using Typescript使用 Typescript 在 Material-UI 中的 createMuiTheme 中将属性添加到背景道具
【发布时间】:2021-02-06 18:30:16
【问题描述】:

我正在尝试在 createMuiTheme 中添加一个新属性。但是 Typescript 不允许我这样做。

我按照这里的说明进行操作:https://next.material-ui.com/guides/typescript/#customization-of-theme

我在其中创建了一个 .ts 文件:

import * as React from 'react';

declare module '@material-ui/core/styles' {
  interface TypeBackground {
    darker: string;
  }
}

而且,我在这里创建 Material-UI 主题:

import {createMuiTheme} from "@material-ui/core";

export const darkTheme = createMuiTheme({
    palette: {
        background: {
            darker: '#fafa',
        },
        mode: 'dark'
    },
})

但我收到此错误:

TS2322: Type '{ darker: string; }' is not assignable to type 'Partial<TypeBackground>'.   Object literal may only specify known properties, and 'darker' does not exist in type 'Partial<TypeBackground>'

即便如此,我还是尝试了 material-ui 团队的示例,它可以工作,但不是我的代码。我找不到原因。我可能应该错过一些东西。

我正在使用接口“TypeBackground”,因为它在 material-ui 的 createPalette.d.ts 文件中的命名方式类似。

export interface TypeBackground {
  default: string;
  paper: string;
}

所以我尝试做同样的事情。我认为这与向调色板属性添加道具相同。

谢谢!

【问题讨论】:

    标签: javascript reactjs typescript material-ui typescript-typings


    【解决方案1】:

    好的,所以我刚刚找到了解决方案。但我真的不明白为什么它会起作用。

    我修改了“声明模块”这一行:

    declare module '@material-ui/core/styles/createPalette'
    

    我只是在样式之后添加了“createPalette”。现在它正在工作,我只是不知道为什么^^!

    【讨论】:

      【解决方案2】:

      你需要在模块声明中导出接口。

        export interface TypeBackground {
          darker: string;
        }
      

      【讨论】:

      • 不,它不起作用,但感谢您的回答:| !
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 2020-01-10
      • 2020-01-03
      • 2018-02-14
      • 2021-10-24
      相关资源
      最近更新 更多