reactjs - React styled-components - 类型 'StyledComponent<"label", any, {}, never>' 不可分配给类型 'never'
问题描述
我正在尝试使用带有打字稿和 BEM 结构的样式组件
所以我有一个简单的例子
//index.tsx
import styled from 'styled-components'
import Header from './Header'
interface ICard {
Header:
}
const Card = styled.div`
border: 1px solid gray;
padding: 10px;
`
Card.Header = Header
export default Card
//头文件.tsx
import styled from 'styled-components'
const Header = styled.h1`
color: #313c53;
font-size: 1.2em;
line-height: 1.5;
`
export default Header
并在标记中
<Card>
<Card.Header>
Header
</Card.Header>
</Card>
我的问题出在 index.tsx 中,这里出现错误Card.Header = Header
Type 'StyledComponent<"label", any, {}, never>' is not assignable to type 'never'.ts(2322)
我知道这与打字稿有关,我一直在尝试修复界面但无法使其正常工作。
如何修复此打字稿错误
解决方案
当您尝试分配StyledComponent
内部Card
并Card
创建为StyledComponent
.
请使用以下代码,
import styled from "styled-components";
import Header from "./header";
const Card: any = styled.div`
border: 10px solid green;
padding: 10px;
`;
Card.header = Header;
export default Card;
其他方法是在 TypeScript 中创建接口,可用于定义类型。
请参见以下代码,
import styled, { StyledComponentBase } from "styled-components";
import Header from "./header";
interface ICard extends StyledComponentBase<any, {}> {
header?: any;
}
const Card: ICard = styled.div`
border: 10px solid green;
padding: 10px;
`;
Card.header = Header;
export default Card;
请查看此示例的演示 [此处][3]。
希望这会帮助你。
推荐阅读
- java - 使用带有 RLO 的 redisson 本地缓存
- javascript - 如何为 lodash orderBy 的第二个参数指定两个值?
- php - 如何使用 PHP 缩短 URL
- spring - Spring boot Hibernate Schema 多租户动态租户
- angular - 发生未处理的异常:无法编译入口点@angular/material/tooltip
- go - VS Code: Go - main 在这个块中重新声明
- bash - 在 Cloud Run 上部署基于 bash 的服务器:如何修复 502 Bad gateway 错误?
- html - 即使内容更高的卡体,大小和宽度相同
- robotframework - RobotFramework - 同一过程中测试用例中的顺序步骤
- amazon-web-services - 与本地模板化不一致的条件结果类型