小编典典

打字稿接口需要两个属性之一存在

all

我正在尝试创建一个界面

export interface MenuItem {
  title: string;
  component?: any;
  click?: any;
  icon: string;
}
  1. 有没有办法要求componentclick设置
  2. 有没有办法要求不能设置这两个属性?

阅读 56

收藏
2022-08-05

共1个答案

小编典典

不是使用单个接口,因为类型没有条件逻辑并且不能相互依赖,但是您可以通过拆分接口:

export interface BaseMenuItem {
  title: string;
  icon: string;
}

export interface ComponentMenuItem extends BaseMenuItem {
  component: any;
}

export interface ClickMenuItem extends BaseMenuItem {
    click: any;
}

export type MenuItem = ComponentMenuItem | ClickMenuItem;
2022-08-05