使用样式组件时,不兼容的蚂蚁设计Menuprops
我正在使用TypeScript的Ant Design,并且正在尝试创建ANTD菜单组件的样式组件包装器,我的文件就是这样:
// Wrapper.tsx
import { MenuProps } from "antd";
// Styles
import { StyledMenu } from "./styles";
const Menu = (props: MenuProps) => {
return <StyledMenu {...props} />; // Typescript error when spreading props
};
export default Menu;
// styles.ts
import styled from "styled-components";
import { Menu, MenuProps } from "antd";
export const StyledMenu = styled(Menu)<MenuProps>``;
但是由于某种原因,在将包装器道具传播到样式的情况下,我会遇到打字稿错误组件(这没有任何意义,因为Menuprops在两个文件中都是相同的),而且我不知道这是什么问题。打字稿错误消息是:
(alias) const StyledMenu: StyledComponent<typeof Menu, DefaultTheme, MenuProps, never>
import StyledMenu
No overload matches this call.
Overload 1 of 2, '(props: { items?: ItemType[] | undefined; onClick?: MenuClickEventHandler | undefined; onSelect?: SelectEventHandler | undefined; ... 285 more ...; key?: Key | ... 1 more ... | undefined; } & { ...; } & { ...; }): ReactElement<...>', gave the following error.
Type '{ theme?: MenuTheme | undefined; inlineIndent?: number | undefined; _internalDisableMenuItemTitleTooltip?: boolean | undefined; items?: ItemType[] | undefined; ... 283 more ...; _internalRenderSubMenuItem?: ((originNode: ReactElement<...>, subMenuItemProps: any, stateProps: { ...; }) => ReactElement<...>) | undefine...' is not assignable to type '{ theme?: DefaultTheme | undefined; }'.
Types of property 'theme' are incompatible.
Type 'MenuTheme | undefined' is not assignable to type 'DefaultTheme | undefined'.
Type 'string' is not assignable to type 'DefaultTheme'.
Overload 2 of 2, '(props: StyledComponentPropsWithAs<typeof Menu, DefaultTheme, MenuProps, never, typeof Menu, typeof Menu>): ReactElement<StyledComponentPropsWithAs<typeof Menu, ... 4 more ..., typeof Menu>, string | JSXElementConstructor<...>>', gave the following error.
Type '{ theme?: MenuTheme | undefined; inlineIndent?: number | undefined; _internalDisableMenuItemTitleTooltip?: boolean | undefined; items?: ItemType[] | undefined; ... 283 more ...; _internalRenderSubMenuItem?: ((originNode: ReactElement<...>, subMenuItemProps: any, stateProps: { ...; }) => ReactElement<...>) | undefine...' is not assignable to type '{ theme?: DefaultTheme | undefined; }'.
Types of property 'theme' are incompatible.
Type 'MenuTheme | undefined' is not assignable to type 'DefaultTheme | undefined'.ts(2769)
有人知道它会是什么吗?
EDIT1:创建一个没有样式组件的包装器,可以按预期工作,因此与样式组件有关
I'm using Ant Design with typescript and I'm trying to create a styled component wrapper of the Antd Menu component, my files are this way:
// Wrapper.tsx
import { MenuProps } from "antd";
// Styles
import { StyledMenu } from "./styles";
const Menu = (props: MenuProps) => {
return <StyledMenu {...props} />; // Typescript error when spreading props
};
export default Menu;
// styles.ts
import styled from "styled-components";
import { Menu, MenuProps } from "antd";
export const StyledMenu = styled(Menu)<MenuProps>``;
But for some reason, I'm getting a typescript error when spreading wrapper props into the styled component (which doesn't make any sense because MenuProps are the same in both files), and I have no idea what could it be the problem. The typescript error message is:
(alias) const StyledMenu: StyledComponent<typeof Menu, DefaultTheme, MenuProps, never>
import StyledMenu
No overload matches this call.
Overload 1 of 2, '(props: { items?: ItemType[] | undefined; onClick?: MenuClickEventHandler | undefined; onSelect?: SelectEventHandler | undefined; ... 285 more ...; key?: Key | ... 1 more ... | undefined; } & { ...; } & { ...; }): ReactElement<...>', gave the following error.
Type '{ theme?: MenuTheme | undefined; inlineIndent?: number | undefined; _internalDisableMenuItemTitleTooltip?: boolean | undefined; items?: ItemType[] | undefined; ... 283 more ...; _internalRenderSubMenuItem?: ((originNode: ReactElement<...>, subMenuItemProps: any, stateProps: { ...; }) => ReactElement<...>) | undefine...' is not assignable to type '{ theme?: DefaultTheme | undefined; }'.
Types of property 'theme' are incompatible.
Type 'MenuTheme | undefined' is not assignable to type 'DefaultTheme | undefined'.
Type 'string' is not assignable to type 'DefaultTheme'.
Overload 2 of 2, '(props: StyledComponentPropsWithAs<typeof Menu, DefaultTheme, MenuProps, never, typeof Menu, typeof Menu>): ReactElement<StyledComponentPropsWithAs<typeof Menu, ... 4 more ..., typeof Menu>, string | JSXElementConstructor<...>>', gave the following error.
Type '{ theme?: MenuTheme | undefined; inlineIndent?: number | undefined; _internalDisableMenuItemTitleTooltip?: boolean | undefined; items?: ItemType[] | undefined; ... 283 more ...; _internalRenderSubMenuItem?: ((originNode: ReactElement<...>, subMenuItemProps: any, stateProps: { ...; }) => ReactElement<...>) | undefine...' is not assignable to type '{ theme?: DefaultTheme | undefined; }'.
Types of property 'theme' are incompatible.
Type 'MenuTheme | undefined' is not assignable to type 'DefaultTheme | undefined'.ts(2769)
Does anyone know what could it be?
EDIT1: Creating a wrapper without styled-components works as expected, so its something related to styled-components
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论