Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
623 views
in Technique[技术] by (71.8m points)

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 };
}

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

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

image.png


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...