Добавление пользовательских цветов в палитру приводит к тому, что объект, возможно, «не определен». ТС2532

Я пытаюсь добавить новые пользовательские цвета в палитру material-ui (я знаю, что это будет с 4.1, но в будущем это будет не так)

Я новичок в машинописном тексте, поэтому мне трудно понять, что делать, чтобы он работал.

Я следовал руководству из документации amterial-ui https://material-ui.com/guides/typescript/#настройка темы и придумал это

import createMuiTheme, { ThemeOptions } from '@material-ui/core/styles/createMuiTheme';

declare module '@material-ui/core/styles/createPalette' {
  interface Palette {
    warning?: PaletteColor
    success?: PaletteColor
  }

  interface PaletteOptions {
    warning?: PaletteColorOptions
    success?: PaletteColorOptions
  }
}

export default function createMyTheme(options: ThemeOptions) {
  return createMuiTheme({
    ...options,
  })
}

и при его использовании

import createStyles from '@material-ui/core/styles/createStyles';
import { Theme } from '@material-ui/core/styles/createMuiTheme';

const styles = (theme: Theme) => createStyles({
  success: {
    backgroundColor: theme.palette.success.main,
  },
  error: {
    backgroundColor: theme.palette.error.dark,
  },
  info: {
    backgroundColor: theme.palette.primary.dark,
  },
  warning: {
    backgroundColor: theme.palette.warning.main,
  },
});

подключен к компоненту withStyles HOC

Все, что я получаю, это эта ошибка в консоли

Object is possibly 'undefined'.  TS2532

указывая на backgroundColor: theme.palette.success.main,

Кто-нибудь сделал эту работу?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
1 071
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не нужно делать свойства Palette необязательными — предполагается, что они будут иметь некоторые значения по умолчанию, если они не переопределены параметрами. Измените его описание на следующее:

interface Palette {
  warning: PaletteColor
  success: PaletteColor
}

И все должно нормально работать.

Другие вопросы по теме