Я хочу создать и создать интерфейс для реквизита компонента. В настоящее время это выглядит так:
interface IContextMenuProps {
text: string;
image: string;
}
Я хочу, чтобы текст был необязательным, если предоставлено изображение, и наоборот. Другими словами, один из них должен существовать.
Возможно, вам следует подумать об использовании размеченного объединения:
Отвечает ли это на ваш вопрос? Typescript — сделайте необязательное свойство обязательным при наличии другого свойства
В вашем случае вам нужно использовать union.
Тип будет примерно таким:
type IContextMenuProps = ({ text: string } | { image: string });
вы можете дополнительный текстовый ключ, что-то вроде.
type IContextMenuProps = ({ text: string } | { image: string });
Это делает невозможным создание объекта только с полем text
.
Вы можете сделать это как объединение двух типов: typescriptlang.org/docs/handbook/unions-and-intersections.html