Для описания входящих props в React компоненте, которые могут иметь разные типы в зависимости от значения props.type, используйте TypeScript и перечисление типов (union types). Вот пример кода:
interface BigCardProps {
type: "bigCard";
title: string;
description: string;
imageUrl: string;
}
interface SmallCardProps {
type: "smallCard";
title: string;
imageUrl: string;
}
type CardProps = BigCardProps | SmallCardProps;
const Card = (props: CardProps) => {
if (props.type === "bigCard") {
return (
<div>
<h1>{props.title}</h1>
<p>{props.description}</p>
<img src={props.imageUrl} alt={props.title} />
</div>
);
} else {
return (
<div>
<h1>{props.title}</h1>
<img src={props.imageUrl} alt={props.title} />
</div>
);
}
};
В этом примере мы используем интерфейсы
BigCardProps
и
SmallCardProps
чтобы определить входящие props для каждого типа карточки. Затем мы объединяем их с помощью перечисления типов
CardProps
который может принимать либо
BigCardProps
либо
SmallCardProps
Внутри компонента
Card
мы используем условный оператор
if
для проверки типа props. Если props имеет тип
"bigCard"
мы отображаем соответствующий HTML для большой карточки, а если props имеет тип
"smallCard"
мы отображаем соответствующий HTML для маленькой карточки.
Таким образом, мы можем описать входящие props для React компонента, который может иметь разные типы в зависимости от значения props.type, с помощью TypeScript и перечисления типов (union types).