TypeScript 包含的資料類型如下表:
注意:TypeScript 和 JavaScript 沒有整數類型。
一、Any 類型
任意值是 TypeScript 針對程式設計時類型不明确的變量使用的一種資料類型,它常用于以下三種情況。
1、變量的值會動态改變時,比如來自使用者的輸入,任意值類型可以讓這些變量跳過編譯階段的類型檢查,示例代碼如下:
let x: any = 1; // 數字類型
x = 'I am who I am'; // 字元串類型
x = false; // 布爾類型
2、改寫現有代碼時,任意值允許在編譯時可選擇地包含或移除類型檢查,示例代碼如下:
let x: any = 4;
x.ifItExists(); // 正确,ifItExists方法在運作時可能存在,但這裡并不會檢查
x.toFixed(); // 正确
3、定義存儲各種類型資料的數組時,示例代碼如下:
let arrayList: any[] = [1, false, 'fine'];
arrayList[1] = 100;
二、Null 和 Undefined
1、null
在 JavaScript 中 null 表示 "什麼都沒有"。
null是一個隻有一個值的特殊類型。表示一個空對象引用。
用 typeof 檢測 null 傳回是 object。
2、undefined
在 JavaScript 中, undefined 是一個沒有設定值的變量。typeof 一個沒有值的變量會傳回 undefined。Null 和 Undefined 是其他任何類型(包括 void)的子類型,可以指派給其它類型,如數字類型,此時,指派後的類型會變成 null 或 undefined。
而在TypeScript中啟用嚴格的空校驗(--strictNullChecks)特性,就可以使得null 和 undefined 隻能被指派給 void 或本身對應的類型,示例代碼如下:
// 啟用 --strictNullChecks
let x: number;
x = 1; // 運作正确
x = undefined; // 運作錯誤
x = null; // 運作錯誤
上面的例子中變量 x 隻能是數字類型。如果一個類型可能出現 null 或 undefined, 可以用 | 來支援多種類型,示例代碼如下:
// 啟用 --strictNullChecks
let x: number | null | undefined;
x = 1; // 運作正确
x = undefined; // 運作正确
x = null; // 運作正确
三、never 類型
let x: never;
let y: number;
// 運作錯誤,數字類型不能轉為 never 類型
x = 123;
// 運作正确,never 類型可以指派給 never類型
x = (()=>{ throw new Error('exception')})();
// 運作正确,never 類型可以指派給 數字類型
y = (()=>{ throw new Error('exception')})();
// 傳回值為 never 的函數可以是抛出異常的情況
function error(message: string): never {
throw new Error(message);
}
// 傳回值為 never 的函數可以是無法被執行到的終止點的情況
function loop(): never {
while (true) {}
}