В TypeScript для описания входящих props с разными типами можно использовать условные типы. Например, для React компонента, который ожидает пропсы type с типом "bigCard" или "smallCard", можно использовать следующий код:
type Props = {
type: 'bigCard' | 'smallCard';
// общие пропсы для обоих типов карточек
title: string;
imageUrl: string;
// пропсы для карточки типа "bigCard"
description?: string;
// пропсы для карточки типа "smallCard"
date?: string;
};
const Card: React.FC<Props> = ({ type, title, imageUrl, description, date }) => {
if (type === 'bigCard') {
// рендеринг компонента для типа "bigCard"
return (
<div>
<h2>{title}</h2>
<img src={imageUrl} alt="" />
<p>{description}</p>
</div>
);
}
// рендеринг компонента для типа "smallCard"
return (
<div>
<h2>{title}</h2>
<img src={imageUrl} alt="" />
<p>{date}</p>
</div>
);
};
В этом примере используется условный оператор if, чтобы проверить тип пропса type и в зависимости от его значения отобразить соответствующую карточку.