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 = "zaixian"; 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 = ['zaixian', 1]; // 運行正常 x = [1, 'zaixian']; // 報錯 console.log(x[0]); // 輸出 zaixian |
枚舉 | enum | 枚舉類型用於定義數值集合。 enum Color {Red, Green, Blue}; let c: Color = Color.Blue; console.log(c); // 輸出 2 |
void | void | 用於標識方法返回值的類型,表示該方法沒有返回值。 function hello(): void { alert("Hello zaixian"); } |
null | null | 表示對象值缺失。 |
undefined | undefined | 用於初始化變數為一個未定義的值 |
never | never | never 是其他類型(包括 null 和 undefined)的子類型,代表從不會出現的值。 |
注意:TypeScript 和 JavaScript 沒有整數類型。
Any 類型
任意值是 TypeScript 針對編程時類型不明確的變數使用的一種數據類型,它常用於以下三種情況。
<p>1、變數的值會動態改變時,比如來自用戶的輸入,任意值類型可以讓這些變數跳過編譯階段的類型檢查,示例代碼如下:</p> 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