iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 5
1
自我挑戰組

Typescript 初心者手札系列 第 5

【Day 05】TypeScript 資料型別 - 總覽

前言

閱讀今天的文章前,先回顧一下昨天的學習,回答看看:

  • TypeScript 有哪三種解析資料型別的機制呢?
  • 三種機制的差別和使用情境為何?

如果有點不清楚答案的話,可以看看 Day04 的文章喔!

昨天的文章介紹了 TS 解析資料型別的方法,今天我們要來探討到底 TS 有哪些內建定義的型別(Types)。

根據 TypeScript 官網所列出的資料型別,我把它大致歸類成兩大類如下:

基本型別(Basic Types)

還記得之前曾提過 TS 類似擴充版的 JS 嗎? 因此,JS 內所有的型別 TS 都已內建支援,包括:

  • 原始型別( Primitive Types):包含數字(number)、字串(string)、布林值(boolean)、undefined、null 和 ES6 的 symbol
  • 物件型別 Object Types: 指的是原始型別之外的型別,包括函式(Function)、陣列(Array)、 JS物件本身-基礎物件(Basic Object)以及 ES6 出現的類別(Class)以及類別 new 出的物件實例(instance)
  • void:表示不回傳任何值(等於預設回傳 undefined)

TypeScript 擴充型別

指的是在 TS 才出現的型別,包括:

  • 列舉(Enum):用來表示被限定在一定範圍集合的系列元素,例如一週7天(限定週一至週日),紅綠燈(限定顏色紅、黃、綠)
  • 元組(Tuple):用來表示一個已知元素數量和型別的陣列
  • 介面(Interface): 用來約束 Class 的行為,只描述屬性(Property)和方法(Method),可以想成是抽象的「形容詞」,但要注意的是 Interface 不像 Class 一樣可以實例化
  • 明文型別(Literal Type): 一個值也可以成為一個型別,比如字串 "Kira" 若成為某變數的型別的話,在此型別底下只能存剛好等於 "Kira" 字串值,不只字串,數字、物件等其他型別也可以
  • 特殊型別:這邊把 anynever(TS 2.0釋出)以及最新的 unknown 型別(TS 3.0釋出)歸在一起,之後好一起討論
  • 複合型別:即聯合型別(Union Types)交集型別(Intersection Types)的型別組合。這類型的型別由邏輯運算子組成,分別是 | 與 &
  • 通用型別(Generic Types):指在定義函式、介面或類別時,不預先指定具體的型別,而是在使用時再指定型別的特性

小結

今天先短短總覽 TypeScript 支援的型別,後續每天將會一點一滴探討上述型別的正確運用方式和使用細節。

參考資料:TypeScript官網


上一篇
【Day 04】 TypeScript 判斷資料型別的機制 - 型別推論 x 斷言 x 註解
下一篇
【Day 06】TypeScript 資料型別 - 原始型別 (Primitive Types)
系列文
Typescript 初心者手札30

1 則留言

0
tsuifei
iT邦新手 5 級 ‧ 2019-09-20 21:34:04

這系列我要留著半年一年後細細品嚐,配著紅酒加卡蒙貝~

Askie Lin iT邦新手 5 級 ‧ 2019-09-20 22:35:32 檢舉

我也是我也是,超想學的,連載結束一次追

我要留言

立即登入留言