我使用带有类型记录的资料ui,我必须声明主题界面和ThemeOptions,但只有在同一个文件中才能工作。是否有更好的方法来区分声明和实际tsx文件?
import React from "react";
import ReactDOM from "react-dom";
import { createTheme } from "@mui/material";
import { orange } from "@mui/material/colors";
declare module "@mui/material/styles" {
interface Theme {
status: {
danger: string;
};
}
// allow configuration using `createTheme`
interface ThemeOptions {
status?: {
danger?: string;
};
}
}
const theme = createTheme({
status: {
danger: orange[500],
},
});
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
);发布于 2022-11-22 17:28:55
只需转到项目中所需的目录,并创建一个[name].d.ts文件(随您喜好而定)。里面的东西,比如:
import { ThemeOptions } from "@mui/material/styles"; // I strongly recommend use this path.
import { Theme } from "@mui/material/styles"; // I strongly recommend use this path.
declare module "@mui/material/styles" {
interface Theme {
status: {
danger: string;
};
}
interface ThemeOptions {
status?: {
danger?: string;
};
}
}之后,您不必在任何地方导入该文件,TS项目将自动将新属性添加到Theme和ThemeOptions
请记住,ThemeOptions使用createTheme函数,Theme使用useTheme或makeStyles函数,这两个文件都应该(更好)具有相同的属性(在Theme one中都是可选的)。
https://stackoverflow.com/questions/71488950
复制相似问题