天天看點

#yyds幹貨盤點# 系統學習 TypeScript(三)——基礎類型

#yyds幹貨盤點# 系統學習 TypeScript(三)——基礎類型

前言

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 會根據初始值自動添加類型。

~

~ 本文完,感謝閱讀!