亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

TypeScript 類型別名

本節介紹的類型別名,就是通過關鍵字 type 給類型起個別名,類型別名較多應用于聯合類型、交叉類型這種復合類型。

1. 慕課解釋

類型別名會給類型起個新名字。類型別名有時和接口很像,但是可以作用于原始值,聯合類型,元組以及其它任何你需要手寫的類型。

用關鍵字 type 定義類型別名。

2. 舉例說明

類型別名不會新建一個類型,而是創建一個新名字來引用此類型

先看下面幾個例子,

原始類型:

type brand = string
type used = true | false

const str: brand = 'imooc'
const state: used = true

聯合類型:

type month = string | number

const currentMonth: month = 'February'
const nextMonth: month = 3

交叉類型:

interface Admin {
  id: number,
  administrator: string,
  timestamp: string
}

interface User {
  id: number,
  groups: number[],
  createLog: (id: number) => void,
  timestamp: number
}

type T = Admin & User

同接口一樣,類型別名也可以是泛型:

type Tree<T, U> = {
  left: T,
  right: U
}

3. 接口 vs. 類型別名

類型別名看起來和接口非常類似,區別之處在于:

  • 接口可以實現 extends 和 implements,類型別名不行。
  • 類型別名并不會創建新類型,是對原有類型的引用,而接口會定義一個新類型。
  • 接口只能用于定義對象類型,而類型別名的聲明方式除了對象之外還可以定義交叉、聯合、原始類型等。

類型別名是最初 TypeScript 做類型約束的主要形式,后來引入接口之后,TypeScript 推薦我們盡可能的使用接口來規范我們的代碼。

4. 小結

類型別名在定義交叉類型、聯合類型時特別好用,要注意類型別名與接口的區別。