类型错误:没有重载匹配此调用- TypeScript,NextJS,styled-components

hzbexzde  于 2023-10-18  发布在  TypeScript
关注(0)|答案(1)|浏览(110)

我试图在我的页脚呈现图标,但不断得到一个“类型错误:在我的StyledIconsWrapper旁边没有重载匹配此调用”错误。这只是一个问题,因为这会阻止Vercel部署,否则代码会正常工作。
下面是我的代码:

interface StyledIconsProps {
  name: string;
  width: number;
  height: number;
  color: string;
  viewBox: string;
  externalUrl: string;
}

const socials = [
  {
    name: "instagram",
    width: 22,
    height: 22,
    color: "currentColor",
    viewBox: "0 0 32 32",
    externalUrl: "https://www.instagram.com/",
  },
];

export const FooterIcons = (): ReactElement => {
  const { colors } = useTheme();

  return (
    <IconWrapper>
      <IconContainer>
        <Icon name="logoTl_White_L" width={150} height={33} color="currentColor" />
        We build digital shapers.
      </IconContainer>
      <StyledIconsWrapper color={colors.neutrals.white}>
        {socials.map(({ name, width, height, color, viewBox, externalUrl }) => {
          return (
            <StyledIcon
              target="_blank"
              rel="noopener noreferrer"
              href={externalUrl}
              key={name}
              color={color}
            >
              <Icon name={name} width={width} height={height} color={color} viewBox={viewBox} />
            </StyledIcon>
          );
        })}
      </StyledIconsWrapper>
    </IconWrapper>
  );
};

我的StyledIconsWrapper:

const StyledIconsWrapper = styled.div<StyledIconsProps>`
  display: flex;
  flex-direction: row;
  margin-top: 10px;

  & > * {
    color: ${({ color }) => color};
  }
`;

是什么导致了错误?

vzgqcmou

vzgqcmou1#

在我看来,你的Prop都是必需的,所以元素希望它们都被定义,而不仅仅是color。你可以把你的 prop 改成:

interface StyledIconsProps {
  name?: string
  width?: number
  height?: number
  color: string
  viewBox?: string
  externalUrl?: string
}

或者更改样式化的div以仅采用颜色:

const StyledIconsWrapper = styled.div<{color: string}>`
  display: flex;
  flex-direction: row;
  margin-top: 10px;

  & > * {
    color: ${({ color }) => color};
  }
`

相关问题