TypeScript 高级类型

发布于 2023-05-11 20:51:33 字数 1048 浏览 63 评论 0

交叉类型 &

交叉类型是将多个类型合并为一个类型。这让我们可以把现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。

语法: T & U,其返回类型既要符合 T 类型也要符合 U 类型。

interface Ant {
  name: string
  weight: number
}

interface Fly {
  flyHeight: number
  speed: number
}

// 少了任何一个属性都会报错
const flyAnt: Ant & Fly = {
  name: '蚂蚁呀嘿',
  weight: 0.2,
  flyHeight: 20,
  speed: 1,
}

联合类型 |

联合类型将多个类型组合成一个类型,可以是多个类型的任意一个。

语法:T | U,其返回类型为连接的多个类型中的任意一个。

class Bird {
  fly() {
    console.log('Bird flying')
  }
  layEggs() {
    console.log('Bird layEggs')
  }
}

class Fish {
  swim() {
    console.log('Fish swimming')
  }
  layEggs() {
    console.log('Fish layEggs')
  }
}

const bird = new Bird()
const fish = new Fish()

function start(pet: Bird | Fish) {
  // 调用 layEggs 没问题,因为 Bird 或者 Fish 都有 layEggs 方法
  pet.layEggs()

  // 会报错:Property 'fly' does not exist on type 'Bird | Fish'
  // pet.fly();

  // 会报错:Property 'swim' does not exist on type 'Bird | Fish'
  // pet.swim();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

仅一夜美梦

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

亽野灬性zι浪

文章 0 评论 0

少年亿悲伤

文章 0 评论 0

南七夏

文章 0 评论 0

qq_EJoXxu

文章 0 评论 0

17780639550

文章 0 评论 0

萌逼全场

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文