TypeScript的联合类型和交叉类型
创作时间:
作者:
@小白创作中心
TypeScript的联合类型和交叉类型
引用
CSDN
1.
https://blog.csdn.net/yusirxiaer/article/details/136480897
联合类型
在 TypeScript 中,可以使用联合类型来定义对象接口,从而表示一个对象可以具有多种不同结构的类型。联合类型是或的关系!!!
interface Circle {
kind: "circle";
radius: number;
}
interface Square {
kind: "square";
sideLength: number;
}
type Shape = Circle | Square;
const circle: Shape = { kind: "circle", radius: 5 };
const square: Shape = { kind: "square", sideLength: 4 };
如果如下方错误写法,为什么会报错呢?
const circle: Shape = { kind: "circle", radius: 5 , sideLength: 4};
circle.kind// 可以访问
circle.radius// 会报错
circle.sideLength // 会报错
circle.kind// 可以访问
circle.radius// 会报错
circle.sideLength // 会报错
在 TypeScript 中,当使用联合类型时,一个对象只能包含联合类型中共有的属性。在你的示例中,
Circle
接口有属性 kind和 radius,而
Square
接口有属性 kind和 sideLength 。
因此,当你将它们组合成联合类型Shape时,对象只能是{
kind: "circle";
radius: number;
},或者{
kind: "square";
sideLength: number;
}。
在这种情况下,circle对象可以包含 kind 属性,但它不能同时包含 radius 和 sideLength 属性。因此,当你尝试访问 circle.radius 时会报错,因为 radius 属性并不属于 circle对象。
如果你希望创建一个对象同时包含 kind、radius 和sideLength 属性,你需要使用交叉类型(
&
)而不是联合类型(
|
)。
交叉类型
在 TypeScript 中,使用交叉类型创建新类型时,对象必须包含交叉类型中所有属性。
交叉类型&是与的关系是并集!!!
interface Animal {
name: string;
}
interface Mammal {
hasFur: boolean;
numberOfLegs: number;
}
// 使用交叉类型组合 Animal 和 Mammal 接口
type MammalAnimal = Animal & Mammal;
const dog: MammalAnimal = {
name: "Dog",
hasFur: true,
numberOfLegs: 4
};
console.log(dog);
热门推荐
大寒,建议大家:少吃鱼和土豆,多吃8样,营养暖身辞冬迎春
青岛十大特色菜:从油爆海螺到清蒸加吉鱼,哪道最能代表青岛
微信转发朋友圈的步骤、注意事项与社交礼仪
这植物茎可做扫帚,俗称“扫帚草”,嫩苗可食用,种子是药材!
高端不锈钢炒锅使用指南:从开锅到日常维护全攻略
西格列汀新研究:心血管安全再获认证
西格列汀:糖尿病治疗的新希望
探访河南开封鼓楼夜市,品味米多奇馍片,解锁中原特色小吃之旅
《奇妙猫咪世界》炎夏观星行动限时开启!
EDG夺冠战术大揭秘:英雄联盟洲际赛经典回顾
英雄联盟洲际赛:LPL的荣耀与趣事
春节大扫除:提升家庭健康和幸福感!
腊月初一扫尘发红:迎新纳福的传统习俗
腊月除尘,科学打扫防病过新年
太阳形成究竟用了多长时间?
地球正在远离太阳,对气温有何影响?揭秘以后不会越来越热的真相
南昌17个夜游好去处,地铁直达!
江西必吃的十大美食,你怎能错过?
遗嘱公证全流程指南:从申请到公证书领取
汕头到贵州自驾游:一路美景等你来!
汕头到贵州自驾游:冬季避寒新宠!
只有河南·戏剧幻城:倾情讲述大河之南的故事
从100元购买力变迁看中国经济30年
100元在瑞士能买啥?揭秘高物价真相!
百元人民币在朝鲜能买一车粮食?揭秘朝鲜经济民生现状
亲手制作贺卡:传递情感与创意的乐趣之旅
电子娱乐设备包括哪些 十大常见的娱乐类电子设备有哪些
推动“零碳海南”新基建 宁德时代先遣队CharGo充电狗率先进场
秋收必备:五种常见蔬菜的传统储存妙招,简单实用过冬无忧!
秋收必备:五种常见蔬菜的传统储存妙招