ts中接口多继承和联合类型的用法有没有区别

export interface GoodsMenuState extends KState<InitData> {}

export type GoodsProps = PageWrapperProps<Reducers, Asyncs> & GoodsState & {
  location: { pathname: string };
};

以上代码中声明的类型与一下声明方式有没有区别,新手入坑,求指教
interface GoodsProps extends PageWrapperProps<Reducers, Asyncs>, GoodsState {
location: { pathname: string };
}

疑问:接口多继承是否也可以实现&(联合类型)的效果

阅读 5.4k
1 个回答

第一,你这不叫联合类型Union Types),联合类型是逻辑或的关系;你这是逻辑和关系,是交叉类型Intersection Types)。

第二,你这个例子里确实可以,但语义上二者是有区别的。多继承遵循 OOP 的继承关系;而交叉类型是类似于 Object.assign 效果的。在某些情况下,只能用交叉类型、而不能用多继承,比如:

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题