【发布时间】:2021-04-30 11:27:55
【问题描述】:
我有以下组件,它可以包含图像或文本。因此在 JSX 中我检查是否有图像(因为这意味着不能有文本,反之亦然),然后显示图像或文本。
如何使用 TypeScript 类型定义这种行为?
我BlockCtaDoubleData,始终可用,EITHER BlockCtaDoubleImageData OR BlockCtaDoubleTextData。
我尝试了以下方法,但 Typescript 不断为 props.text 和 props.image 抛出错误,但对于 props.headline 却没有。
怎么样?
interface BlockCtaDoubleData
{
headline: string;
}
interface BlockCtaDoubleImageData extends BlockCtaDoubleData
{
image: string;
alt: string;
}
interface BlockCtaDoubleTextData extends BlockCtaDoubleData
{
text: string;
}
export type BlockCtaDoubleProps = BlockCtaDoubleTextData | BlockCtaDoubleImageData;
export function BlockCtaDouble(props: BlockCtaDoubleProps)
{
return (
<div>
{props.headline}
{props.image ? (
<img src={props.image} alt={props.alt}/>
) : (
{props.text}
)}
</div>
);
}
仅供参考:错误表示计数器类型中不存在相应的道具。
【问题讨论】:
标签: reactjs typescript types