商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > typescript交叉类型的实现示例

typescript交叉类型的实现示例

  发布于2026-07-23 阅读(0)

扫一扫,手机访问

一,前言

交叉类型,简单来说,就是把多个类型合并成一个类型。它允许我们将现有的多种类型叠加到一起,最终形成一种新的类型,这个新类型自然就包含了所有原始类型的特性。听起来是不是有点像“类型界的混搭”?

二,交叉类型使用

我们通常用 type 关键字来声明一个交叉类型。举个例子:

interface A { a: number }
interface B { b: string }
type C = A & B // C 同时拥有 A 和 B 的所有属性

在这个例子里,C 就是 AB 的交叉类型,它必须同时满足 ab 两个属性。换句话说,当你使用 C 类型的变量时,得同时提供 number 类型的 astring 类型的 b——少一个都不行。

三,注意事项

1. 并不是所有类型都适合做交叉。比如 string & number 这种原子类型的交叉,其实没有任何意义——因为不存在一个值既是字符串又是数字。这就像要求一个物体同时是苹果和橙子,现实中没有这种东西。

2. 当两个接口类型做交叉,且它们包含相同的属性名时,情况就变得微妙了。如果这两个属性的类型相同,那么合并后属性类型不变;但如果类型不同,整个交叉类型会变成 never。看代码:

interface A { a: number }
interface B { a: string }
type C = A & B // C 是 never 类型

为什么会这样?因为 a 属性既要同时是 number 又是 string,这根本不可能实现,所以 TypeScript 直接给它判了“死刑”——返回 never

3. 要特别注意交叉类型和联合类型的区别:交叉类型是“既是也是”,而联合类型是“或者是”。前者要求所有条件同时满足,后者只要求满足其中之一。这两者在实际开发中经常被混淆,但一旦搞懂,就能避免很多类型上的坑。

本文转载于:https://www.jb51.net/javascript/355896ws9.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注