如何在 React 和 Typescript 中使用 emotion/styled

How to use emotion/styled with React and Typescript

我已经将根组件包装在 @emotion/reactThemeProvider 中,这样我就可以访问 props.theme

const StyledDiv = styled.div`
  background-color: ${(props) => props.theme.palette.primary.main};
`;

问题: props.theme 根据 TS 是一个空对象 - palette 在主题类型上不存在(但是我传递给的对象主题提供者确实包含该属性)。如果我让 TS 忽略它,代码就可以工作。

文档对此进行了介绍,这似乎是一个简单的修复方法: Extend the Emotion theme type

但是我对文档的理解不够深入,无法使 props.themeTheme 类型具有正确的属性。

非常感谢为我指明正确方向的任何帮助!

添加此文件types.d.ts

import "@emotion/react";
import { IPalette } from "../your-palette";

declare module "@emotion/react" {
  export interface Theme extends IPalette {}
}