You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript 中向 styled-component 传递自定义 props 报错如何解决?

报错原因
  • TypeScript 类型校验不通过:在TypeScript环境中使用styled-components时,给样式组件传递自定义的open属性前,没有提前声明该属性的类型,TS会将样式组件默认等同于原生div元素,认为你传入了原生div不存在的open属性,因此触发类型报错。
  • 样式文件缺少必要引入:你贴出的HeaderStyled组件代码中,没有引入styled对象和你用到的theme全局变量,也会引发运行时报错。
解决方案
  1. 补全Header_styled文件的依赖引入,同时给自定义样式组件声明接收的props类型,代码修改如下:
// 引入styled-components
import styled from 'styled-components';
// 引入你项目里的theme配置文件,路径根据你的项目结构调整
import theme from '你的theme文件路径';

// 声明样式组件接收的props类型
interface IHeaderStyledProps {
  open: boolean;
}

// 给styled.div绑定泛型类型
const HeaderStyled = styled.div<IHeaderStyledProps>`
    background-color: ${theme.primaryBlue};
    display: flex;
    justify-content: flex-end;
    padding: 20px 20px;
    align-items: center;

    ul {
            position: absolute;
            background-color: white;
            top: 6%;
            width: 80%;
            height: 25%;
            right: 10%;
            display: flex; 
            flex-direction: column;
            padding: 0px;
            align-items: center;
            justify-content: space-around;
            transform: ${({open}) => open ? 'translateX(0)': 'translateX(120%)'};
            li {
                padding: 0px;
                
                a {
                    color: #0000002e;
                }
            }
            
            button {
                background-color: yellow;
                color: black;
            }
        }
`

export default HeaderStyled;
  1. 可选优化:为了避免自定义的open属性被透传给底层的原生div节点,建议按照styled-components的规范给自定义props加$前缀,声明为transient属性,修改后对应代码如下:
    Header_styled文件:
interface IHeaderStyledProps {
  $open: boolean;
}

const HeaderStyled = styled.div<IHeaderStyledProps>`
  /* 其他样式不变 */
  ul {
    transform: ${({$open}) => $open ? 'translateX(0)': 'translateX(120%)'};
  }
`

Header组件对应修改传参:

<HeaderStyled $open={open}>
  {/* 内部内容不变 */}
</HeaderStyled>

修改完成后即可解决报错,动态样式也能正常生效。

内容的提问来源于stack exchange,提问作者Thanh。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:48:01