TypeScript 基礎型別
TypeScript 包含的資料型別如下表:
資料型別 | 關鍵字 | 描述 |
---|---|---|
任意型別 | any | 宣告為 any 的變數可以賦予任意型別的值。 |
數字型別 | number | 雙精度 64 位浮點值。它可以用來表示整數和分數。 let binaryLiteral: number = 0b1010; // 二進位制 let octalLiteral: number = 0o744; // 八進位制 let decLiteral: number = 6; // 十進位制 let hexLiteral: number = 0xf00d; // 十六進位制 |
字串型別 | string | 一個字元系列,使用單引號(')或雙引號(")來表示字串型別。反引號(`)來定義多行文字和內嵌表示式。 let name: string = "itread01"; let years: number = 5; let words: string = `您好,今年是 ${ name } 釋出 ${ years + 1} 週年`; |
布林型別 | boolean | 表示邏輯值:true 和 false。 let flag: boolean = true; |
陣列型別 | 無 | 宣告變數為陣列。 // 在元素型別後面加上[] let arr: number[] = [1, 2]; // 或者使用陣列泛型 let arr: Array<number> = [1, 2]; |
元組 | 無 | 元組型別用來表示已知元素數量和型別的陣列,各元素的型別不必相同,對應位置的型別需要相同。 let x: [string, number]; x = ['itread01', 1]; // 執行正常 x = [1, 'itread01']; // 報錯 console.log(x[0]); // 輸出 itread01 |
列舉 | enum | 列舉型別用於定義數值集合。 enum Color {Red, Green, Blue}; let c: Color = Color.Blue; console.log(c); // 輸出 2 |
void | void | 用於標識方法返回值的型別,表示該方法沒有返回值。 function hello(): void { alert("Hello itread01"); } |
null | null | 表示物件值缺失。 |
undefined | undefined | 用於初始化變數為一個未定義的值 |
never | never | never 是其它型別(包括 null 和 undefined)的子型別,代表從不會出現的值。 |
注意:TypeScript 和 JavaScript 沒有整數型別。
Any 型別
任意值是 TypeScript 針對程式設計時型別不明確的變數使用的一種資料型別,它常用於以下三種情況。
1、變數的值會動態改變時,比如來自使用者的輸入,任意值型別可以讓這些變數跳過編譯階段的型別檢查,示例程式碼如下:
let x: any = 1; // 數字型別 x = 'I am who I am'; // 字串型別 x = false; // 布林型別
改寫現有程式碼時,任意值允許在編譯時可選擇地包含或移除型別檢查,示例程式碼如下:
let x: any = 4; x.ifItExists(); // 正確,ifItExists方法在執行時可能存在,但這裡並不會檢查 x.toFixed(); // 正確
定義儲存各種型別資料的陣列時,示例程式碼如下:
let arrayList: any[] = [1, false, 'fine']; arrayList[1] = 100;
Null 和 Undefined
null
在 JavaScript 中 null 表示 "什麼都沒有"。
null是一個只有一個值的特殊型別。表示一個空物件引用。
用 typeof 檢測 null 返回是 object。
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; // 執行正確
更多內容可以檢視:JavaScript typeof, null, 和 undefined
never 型別
never 是其它型別(包括 null 和 undefined)的子型別,代表從不會出現的值。這意味著宣告為 never 型別的變數只能被 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) {} }
參考文章:https://segmentfault.com/a/1190000008893626