
- TypeScript 基礎
- TypeScript - 首頁
- TypeScript - 路線圖
- TypeScript - 概述
- TypeScript - 環境搭建
- TypeScript - 基本語法
- TypeScript vs. JavaScript
- TypeScript - 特性
- TypeScript - 變數
- TypeScript - let & const
- TypeScript - 運算子
- TypeScript 基本型別
- TypeScript - 型別
- TypeScript - 型別註解
- TypeScript - 型別推斷
- TypeScript - 數字
- TypeScript - 字串
- TypeScript - 布林值
- TypeScript - 陣列
- TypeScript - 元組
- TypeScript - 列舉
- TypeScript - any
- TypeScript - never
- TypeScript - 聯合型別
- TypeScript - 字面量型別
- TypeScript - Symbol
- TypeScript - null vs. undefined
- TypeScript - 類型別名
- TypeScript 控制流
- TypeScript - 決策
- TypeScript - if 語句
- TypeScript - if else 語句
- TypeScript - 巢狀 if 語句
- TypeScript - switch 語句
- TypeScript - 迴圈
- TypeScript - for 迴圈
- TypeScript - while 迴圈
- TypeScript - do while 迴圈
- TypeScript 函式
- TypeScript - 函式
- TypeScript - 函式型別
- TypeScript - 可選引數
- TypeScript - 預設引數
- TypeScript - 匿名函式
- TypeScript - Function 建構函式
- TypeScript - rest 引數
- TypeScript - 引數解構
- TypeScript - 箭頭函式
- TypeScript 介面
- TypeScript - 介面
- TypeScript - 介面擴充套件
- TypeScript 類和物件
- TypeScript - 類
- TypeScript - 物件
- TypeScript - 訪問修飾符
- TypeScript - 只讀屬性
- TypeScript - 繼承
- TypeScript - 靜態方法和屬性
- TypeScript - 抽象類
- TypeScript - 存取器
- TypeScript - 鴨子型別
- TypeScript 高階型別
- TypeScript - 交叉型別
- TypeScript - 型別保護
- TypeScript - 型別斷言
- TypeScript 型別操作
- TypeScript - 從型別建立型別
- TypeScript - keyof 型別運算子
- TypeScript - typeof 型別運算子
- TypeScript - 索引訪問型別
- TypeScript - 條件型別
- TypeScript - 對映型別
- TypeScript - 模板字面量型別
- TypeScript 泛型
- TypeScript - 泛型
- TypeScript - 泛型約束
- TypeScript - 泛型介面
- TypeScript - 泛型類
- TypeScript 其他
- TypeScript - 三斜槓指令
- TypeScript - 名稱空間
- TypeScript - 模組
- TypeScript - 環境宣告
- TypeScript - 裝飾器
- TypeScript - 型別相容性
- TypeScript - Date 物件
- TypeScript - 迭代器和生成器
- TypeScript - Mixin
- TypeScript - 實用型別
- TypeScript - 裝箱和拆箱
- TypeScript - tsconfig.json
- 從 JavaScript 到 TypeScript
- TypeScript 有用資源
- TypeScript - 快速指南
- TypeScript - 有用資源
- TypeScript - 討論
TypeScript - 型別
型別系統表示語言支援的不同值型別。型別系統會在程式儲存或操作值之前檢查值的有效性。這確保了程式碼按預期執行。型別系統還可以提供更豐富的程式碼提示和自動文件。
TypeScript 提供資料型別作為其可選型別系統的一部分。資料型別的分類如下所示:

any 型別
any 資料型別是 TypeScript 中所有型別的超型別。它表示動態型別。使用 any 型別等同於選擇不為變數進行型別檢查。
內建型別
下表列出了 TypeScript 中所有內建型別:
資料型別 | 關鍵字 | 描述 |
---|---|---|
數字 | number | 雙精度 64 位浮點數。它可以用來表示整數和小數。 |
字串 | string | 表示 Unicode 字元序列 |
布林值 | boolean | 表示邏輯值,true 和 false |
空值 | void | 用於函式返回型別,表示不返回函式值的函式 |
空 | null | 表示物件值的故意缺失。 |
未定義 | undefined | 表示賦予所有未初始化變數的值 |
Symbol | symbol | ES2015 中引入的唯一且不可變的基元。 |
物件 | object | 表示使用者定義類的例項、陣列、函式等。 |
永不存在 | never | 表示永遠不會出現的值。 |
TypeScript 和 JavaScript 中沒有整數型別。
現在,讓我們詳細瞭解每種內建資料型別。
數字
在 TypeScript 中,number 資料型別可以儲存整數、浮點數、二進位制數、十進位制數、十六進位制數等。但是,所有整數在 TypeScript 中都表示為浮點數。
示例
在下面的程式碼中,age 和 marks 兩個變數都是 number 型別。age 變數包含整數,marks 變數包含浮點數。
// Integer number let age: number = 30; // Float number let marks: number = 30.5;
字串
string 資料型別用於儲存文字值。
您可以透過三種方式定義字串
使用單引號
使用雙引號
使用反引號
反引號用於建立多行字串或模板字串。
示例
在下面的程式碼中,first_name 字串使用單引號建立,last_name 字串使用雙引號建立。full_name 字串使用反引號建立,它使用模板字面量建立字串。
let first_name: string = 'John'; let last_name: string = "Doe"; let full_name: string = `${first_name} ${last_name}`;
布林值
在 TypeScript 中,布林資料型別允許您表示邏輯實體。它儲存 true 或 false 值。布林變數主要用於 if-else 或 switch 等條件語句,根據某些邏輯值執行流程。
示例
在下面的程式碼中,isReady 是布林型別的變數,它包含 true 值。
let isReady: boolean = true;
Symbol
symbol 是一種基元資料型別,主要用於建立唯一值。它允許開發者建立不會與任何其他鍵衝突的唯一物件鍵。
示例
在這裡,我們使用了 Symbol() 建構函式,它返回新的唯一鍵。我們使用 UNIQUE_KEY 作為 obj 物件的鍵。
// Define a symbol const UNIQUE_KEY = Symbol(); // Use the symbol as a property key in an object let obj = { [UNIQUE_KEY]: "SecretValue" };
空
TypeScript 中的 null 型別表示物件值的故意缺失。它是基元型別之一,通常用於指示變數故意不指向任何物件。
示例
在下面的程式碼中,empty 變數包含 null 值。
let empty: null = null;
未定義
undefined 資料型別表示值的缺失。當宣告變數但未初始化時,它包含 undefined 值。
示例
在下面的程式碼中,undef 變數包含 undefined 值。
let undef: undefined;
Null 和 undefined ——它們一樣嗎?
null 和 undefined 資料型別常常令人困惑。null 和 undefined 不能用於引用變數的資料型別。它們只能作為值賦給變數。
但是,null 和 undefined 不相同。用 undefined 初始化的變量表示該變數沒有值或物件分配給它,而 null 表示該變數已設定為值為 undefined 的物件。
物件
object 是一種非基元資料型別,可以包含任何不是數字、字串、布林值、symbol、null 或 undefined 的值。您可以使用物件字面量或 Object() 建構函式建立物件。
示例
在下面的程式碼中,我們使用物件字面量建立了物件。person 變數的型別是一個物件。我們在花括號(物件字面量)之間添加了鍵值對。
let person: object = {name: "Bob"};
空值
void 型別用於不返回值的函式的返回型別。它表示根本沒有型別。
示例
在這裡,我們使用 void 資料型別與函式一起使用,以便函式不返回值。
function log(): void { console.log("log"); }
使用者定義型別
使用者定義型別包括列舉 (enum)、類、介面、陣列和元組。這些將在後面的章節中詳細討論。
陣列
陣列資料型別是相同元素的集合。它儲存元素,您可以使用從 0 開始的陣列索引訪問或更新這些元素。
任何資料型別的陣列可以定義為 data_type[] 或 Array<data_type>,其中 <data_type> 可以是任何基元或非基元資料型別。
示例
在下面的程式碼中,我們定義了一個只包含 3 個元素的數字陣列。1 的索引是 0,2 的索引是 1,3 的索引是 2。
let numbers: number[] = [1, 2, 3];
元組
元組型別允許您表達一個具有固定數量元素的陣列,這些元素的型別是已知的,但不一定是相同的。在處理需要具有特定結構的陣列時,這增加了一層安全性。
示例
在下面的程式碼中,tuple 變數可以具有長度為 2 的陣列作為值。元組的第一個元素是字串型別,第二個元素是數字型別。
let tuple: [string, number] = ["hello", 10]; console.log(tuple); // Output: ["hello", 10]
列舉
列舉是相關值的集合,可以是數字值或字串值。enum 使得以更易讀的方式處理相關常量集變得更容易。
示例
在下面的程式碼中,Color 列舉包含不同的顏色。我們可以使用列舉名 Color 後跟一個點和顏色名稱值來訪問顏色。
enum Color {Red, Green, Blue} let c: Color = Color.Green; console.log(c); // Output: 1