Встречается на 2% собеседований по JavaScript

Как можно типизировать сложные props когда компонент принимает сложные типы данных

Для типизации сложных props в React с TypeScript можно использовать интерфейсы или типы. Особенно полезны дженерики для гибкости.

tsx
interface User {
  id: number;
  name: string;
  address: {
    city: string;
    street: string;
  };
}

type ComplexProps<T> = {
  data: T[];
  renderItem: (item: T) => React.ReactNode;
  onSelect: (selected: T) => void;
};

function ComplexComponent<T>({ data, renderItem, onSelect }: ComplexProps<T>) {
return (
<div>
{data.map((item) => (
<div key={JSON.stringify(item)} onClick={() => onSelect(item)}>
{renderItem(item)}
</div>
))}
</div>
);
}

// Использование
<ComplexComponent<User>
data={users}
renderItem={(user) => <span>{user.name}</span>}
onSelect={(user) => console.log(user.address.city)}
/>

text

Для вложенных структур можно использовать Utility Types (Partial, Pick, Omit) или создавать собственные сложные типы.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы