Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как с помощью TypeScript в React компоненте описать входящие props, если жду разные? (в зависимости от props.type: "bigCard" | "smallCard" )

ПрограммированиеНаписание кода+4
Эдуард
  ·   · 3,8 K
Да, я зарабатываю на ✺Толоке 👇  · 10 апр 2023  · toloka.yandex.ru/promo
В 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 и в зависимости от его значения отобразить соответствующую карточку.
Заработать пару сотен рублей онлайн на Яндекс✺Толока! Регистрируйся.Перейти на toloka.yandex.ru/promo
Помощь пользователям ПК и ноутбуков - спрашивайте   · 20 апр 2023  · itmen.help
Для описания входящих props в React компоненте, которые могут иметь разные типы в зависимости от значения props.type, используйте TypeScript и перечисление типов (union types). Вот пример кода: interface BigCardProps { type:... Читать далее
Компьютерная помощь в вашем городеПерейти на itmen.help/uslugi
1 эксперт согласен
старший разработчик в pseven.io  · 7 окт 2021
Вам нужно сделать два разных интерфейса под каждый вариант. При этом поле type будет иметь не тип string, а конкретно "bigCard" в одном случае и "smallCard" в другом. Пример: interface BigCard { type: 'bigCard';... Читать далее
Что-то осталось непонятно? Спроси в нашей группе в Телеграме!Перейти на t.me/jstsmentor
1 эксперт согласен