前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ts的&和|类型

ts的&和|类型

作者头像
阿超
发布2024-08-23 19:56:08
220
发布2024-08-23 19:56:08
举报
文章被收录于专栏:快乐阿超

如果结果不如你所愿,就在尘埃落定前奋力一搏。——《夏目友人帐》

文档:

https://www.typescriptlang.org/docs/handbook/2/objects.html#intersection-types

让我们用中文来解释这两个例子的区别,并通过几个例子帮助你理解。

交集类型

代码语言:javascript
复制
type Bar = { x: number };
type Baz = { y: number };
type Foo = Bar & Baz;
  • 结果 Foo 类型: { x: number; y: number }
  • 解释: FooBarBaz 的交集类型。它必须同时拥有 xy 两个属性。

示例:

代码语言:javascript
复制
const obj: Foo = { x: 5, y: 10 }; // 合法
const obj2: Foo = { x: 5 }; // 非法,因为缺少 `y`

联合类型

代码语言:javascript
复制
type Foo = { x: number };
type Baz = { y: number };
type Bar = Foo | Baz;
  • 结果 Bar 类型: { x: number } | { y: number }
  • 解释: Bar 是一个联合类型,这意味着它可以是 FooBaz。它可以只包含 x,或只包含 y,但不能同时包含两个属性。

示例:

代码语言:javascript
复制
const obj: Bar = { x: 5 }; // 合法
const obj2: Bar = { y: 10 }; // 合法
const obj3: Bar = { x: 5, y: 10 }; // 非法,因为联合类型只能是 `Foo` 或 `Baz` 之一

总的来说

  • 交集类型(&:要求所有类型的属性都存在。
  • 联合类型(|:允许类型是其中之一。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档