BenderIsGreat34
@BenderIsGreat34
junior front-end

Условия при создании интерфейса\type typescript?

Как указать, что если нету icon, то обязательно должен быть text и наоборот?

type IProps = {
data: { icon?: React.ReactSVGElement; text?: string; id: string | number }[];
handleClick: (id: string | number) => void;
};
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
WblCHA
@WblCHA
type IProps = {
  data: (({ icon: any; } | { text: string; }) & { id: string | number })[];
};

Или по нормальному
type IProps = {
  data: Data[];
}; 

type Data = Data.WithIcon | Data.WithText;
namespace Data {
  interface Base {
    id: string | number;
  }

  export interface WithIcon extends Base {
    icon: any;
  }

  export interface WithText extends Base {
    text: string;
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы