Allen Yu Allen Yu
Home
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《TypeScript入门教程》
GitHub (opens new window)
Home
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《TypeScript入门教程》
GitHub (opens new window)
  • 开始

  • 基础

    • 原始数据类型
    • 任意值
    • 类型推论
    • 联合类型
      • 联合类型 (Union Types)
      • 简单的例子
      • 访问联合类型的属性和方法
      • 参考
    • interfaces
    • 数组类型
    • 函数类型
    • 类型断言
    • 声明文件
    • 内置对象
    • keyof and typeof
    • extends
  • 进阶

  • 实战

  • TypeScript
  • 基础
2020-10-31
目录

联合类型

# 联合类型 (Union Types)

联合类型表示取值可以是多种类型中的一种

# 简单的例子

let myName: string | number
myName = 'Allen Yu'
myName = 28
myName = true // 不能将类型“true”分配给类型“string | number”

可以给 myName 赋值字符串和数字类型,赋值为布尔类型的值时,就会提示报错。

联合类型使用 | 分割每个类型

# 访问联合类型的属性和方法

当 TypeScript 不确定联合类型中的变量,具体是哪个类型时,我们只能访问联合类型中并集的属性和方法。

let myName: string | number
myName.toString()
myName.length // 类型“number”上不存在属性“length”。

上例中,toString 是 string 和 number 的共同的方法,所以可以使用,而 length 属性,number 类型是没有的,所以不能使用。

联合类型的变量在被赋值的时候,会根据类型推论的规则,推断出一个类型。

let myName: string | number
myName = 'Allen Yu'
myName.split('')

myName = 28
myName += 1

以上代码可正常执行,是因为 TypeScript 推断第一个有值的 myName 是 string 类型,第二个有值的 myName 是 number 类型。

# 参考

  • TypeScript 入门教程 - 联合类型 (opens new window)
Last Updated: 3/30/2022, 1:20:25 AM
类型推论
interfaces

← 类型推论 interfaces→

最近更新
01
4 月第 2 周总结
04-17
02
工具类型
04-01
03
Google 搜索小技巧
03-28
更多文章>
Theme by Vdoing | Copyright © 2018-2022 Allen Yu
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式