全国协议5人面授小班,企业级独立开发考核,转业者的IT软件工程师基地 登录/注册 | 如何报名
当前位置: 前端开发   >  TypeScript 类型别名
admin · 更新于 2021-08-06

1. 解释

类型别名会给类型起个新名字。类型别名有时和接口很像,但是可以作用于原始值,联合类型,元组以及其它任何你需要手写的类型。

用关键字 type 定义类型别名。

2. 举例说明

类型别名不会新建一个类型,而是创建一个新名字来引用此类型

先看下面几个例子,

原始类型:

type brand = stringtype used = true | falseconst str: brand = 'hanma'const state: used = true
代码块
  • 1
  • 2
  • 3
  • 4
  • 5

联合类型:

type month = string | numberconst currentMonth: month = 'February'const nextMonth: month = 3
代码块
  • 1
  • 2
  • 3
  • 4

交叉类型:

interface Admin {
  id: number,
  administrator: string,
  timestamp: string}interface User {
  id: number,
  groups: number[],
  createLog: (id: number) => void,
  timestamp: number}type T = Admin & User
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

同接口一样,类型别名也可以是泛型:

type Tree<T, U> = {
  left: T,
  right: U}
代码块
  • 1
  • 2
  • 3
  • 4

3. 接口 vs. 类型别名

类型别名看起来和接口非常类似,区别之处在于:

  • 接口可以实现 extends 和 implements,类型别名不行。
  • 类型别名并不会创建新类型,是对原有类型的引用,而接口会定义一个新类型。
  • 接口只能用于定义对象类型,而类型别名的声明方式除了对象之外还可以定义交叉、联合、原始类型等。

类型别名是最初 TypeScript 做类型约束的主要形式,后来引入接口之后,TypeScript 推荐我们尽可能的使用接口来规范我们的代码。

4. 小结

类型别名在定义交叉类型、联合类型时特别好用,要注意类型别名与接口的区别。


为什么选择汉码未来