
前言
TypeScript 包含的基礎類型總結起來有:
- 布爾值
- 數字
- 字元串
- 數組
- 元組
- 枚舉
- 任意值
- 空值
- Null 和 undefined
- Never
- Object
今天,我們就來詳細了解一下各個類型所代表的含義及表示方法。
布爾值 → boolean
它隻有兩個值——true 和 false。
let isNew: boolean = true;
數字 → number
TypeScript 中的整形和浮點數類型都是 number,這點和 JavaScript 是一樣的,比如:十進制、二進制、八進制和十六進制的類型都是 number。
let decAge: number = 22;
let hexAge: number = 0x0016;
let binaryAge: number = 0b10110;
let octalAge: number = 0o026;
// 以上變量使用 (number).toString(10) 轉換為十進制都為 22
可使用 (number).toString(進制)
将數字轉換為任意進制的類型。
字元串 → string
和 JavaScript 一樣,字元串的值使用單引号或者雙引号包裹:
let myName: string = "程式設計三昧";
let myHomepage: string = `example.com/${myName}`;
數組
TypeScript 中定義數組的方式有兩種。
第一種是元素類型後面接上
[]
,表示由此類型元素組成的一個數組:
let arr: number[] = [1, 2, 3, 4];
// 如果在數組中加入其他元素會報錯
第二種是使用數組泛型定義數組:
let arr1: any[] = [1, "2", 3, "4"];
// 這個數組中可以假如任意類型的元素
元組 Tuple
元組類型允許表示一個已知元素數量和類型的數組,各元素的類型不必相同。
let arr2:[number, string, number] = [1,"2",3];
// 若果寫成 [1,2,3] 會報錯
元素是嚴格規定了數組的長度和每個位置的元素類型,并且在指派時需要嚴格對應,否則會報錯。
枚舉
enum
類型是對JavaScript标準資料類型的一個補充。 像C#等其它語言一樣,使用枚舉類型可以為一組數值賦予友好的名字。
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
預設情況下,從
開始為元素編号。 你也可以手動地指定成員的數值。 例如,我們将上面的例子改成從
1
開始編号:
enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green;
或者,全部都采用手動指派:
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;
枚舉類型提供的一個便利是你可以由枚舉的值得到它的名字。 例如,我們知道數值為2,但是不确定它映射到Color裡的哪個名字,我們可以查找相應的名字:
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];
console.log(colorName); // 顯示'Green'因為上面代碼裡它的值是2
任意值 any
代表任意類型的值。如果不希望類型檢查器對這些值進行檢查而是直接讓它們通過編譯階段的檢查。,那麼就可以使用
any
類型來标記這些變量:
let a: any = 12;
a = "12";
let list: any[] = [1, true, "free"];
list[1] = 100;
空值 void
當一個資料沒有任何類型時,通常用 void 标記,多用于函數傳回值。
function sayName(): void {
console.log(`My name is 程式設計三昧。`);
}
let aNull: void = null;
let aNull1: void = undefined;
void 類型隻能被指派為 null 或者 undefined。
null 和 undefined
TypeScript 中也有 null 和 undefined 兩種類型,它們隻能各自對應 null 值和 undefined 值。
let theNull: null = null;
let theUndefined: undefined = undefined;
這兩個類型基本上沒啥大的用處。
null 和 undefined 是否可指派給 number 類型的變量,取決于編譯配置檔案中的 “--strictNullChecks” 選項是否關閉,一般是建議打開這個選項的。
Never
never
類型表示的是那些永不存在的值的類型。 例如,
never
類型是那些總是會抛出異常或根本就不會有傳回值的函數表達式或箭頭函數表達式的傳回值類型; 變量也可能是
never
類型,當它們被永不為真的類型保護所限制時。
never
類型是任何類型的子類型,也可以指派給任何類型;然而,沒有類型是
never
的子類型或可以指派給
never
類型(除了
never
本身之外)。 即使
any
也不可以指派給
never
。
下面是一些傳回
never
類型的函數:
// 傳回never的函數必須存在無法達到的終點
function error(message: string): never {
throw new Error(message);
}
// 推斷的傳回值類型為never
function fail() {
return error("Something failed");
}
// 傳回never的函數必須存在無法達到的終點
function infiniteLoop(): never {
while (true) {
}
}
object
object 類型包含除了幾種基本類型之外的所有類型。
let obj: object = [1,2,3];
let obj1: object = {
name: "程式設計三昧"
};
let func: object = ()=>{
console.log("程式設計三昧");
}
擴充
1、TypeScript 會根據你給變量的初始值判斷預設類型。
let aNum = 12;
aNum = "number";
// Type 'string' is not assignable to type 'number'.
2、函數方法的參數和傳回值都可以使用類型限制,保證傳參和傳回值的正确性。
function sum(a: number, b:number): number {
return a + b;
}
sum(1, "3");
// Argument of type 'string' is not assignable to parameter of type 'number'.
總結
以上就是 TypeScript 中的基礎資料類型介紹,總結起來就是:
- 在變量(函數的括号)後面添加冒号,後面跟上期望的類型,即可限制類型的前後一緻性;
- 如果沒有顯式的添加類型限制,TypeScript 會根據初始值自動添加類型。
~
~ 本文完,感謝閱讀!