Допустим, есть некий React-компонент вида:
type Item = {
title: string;
name: string;
isEmpty?: boolean;
}
interface ComponentProps {
items: Item[]
}
function Component(props: ComponentProps) {}
В массиве items элемент item может быть или только с полями title и name, либо только isEmpty, но
не одновременно все три поля.
Как сделать, чтобы Typescript подсказывал типы следующим образом:
1. Если я передаю в items это:
<Component items={[
{
title: "some title",
name: "some name"
}
]} />
чтобы Typescript не разрешал заполнять поле isEmpty.
2. А если я передаю в items это:
<Component items={[
{
isEmpty: true
}
]} />
то Typescript чтобы не разрешал заполнять title и name.
А если я попытаюсь эти поля указать все вместе, чтобы Typescript выдавал ошибку, что неверный тип.
Догадываюсь, что это можно сделать с помощью маппинга и infer вроде бы. Но как это делается? Подскажите, пожалуйста, как такое достигается.