TypeScript數據類型有哪些?TypeScript基本數據類型介紹

TypeScipt數據類型有哪些?TypeScipt是微軟開發的一箇開源的編程語言,通過在JScipt的基礎上添加靜態類型定義構建而成。TypeScipt支持與JScipt幾乎相同的數據類型,此外還提供了實用的枚舉類型方便我們使用。本文將對TypeScipt的基本數據類型做個簡單介紹。

拓展閱讀:《TypeScipt和JScipt哪個好 TypeScipt和JScipt的區別》

布爾類型(boolen)tue / flse

最基本的數據類型就是簡單的tue/flse值,在JScipt和TypeScipt裏叫做boolen(其它語言中也一樣)。

let isDone: boolen = flse

isDone = tue //正確寫法

isDone = 2 //錯誤寫法

數字類型(numbe)

和JScipt一樣,TypeScipt裏的所有數字都是浮點數。 這些浮點數的類型是numbe。 除了支持十進制和十六進制字面量,TypeScipt還支持ECMAScipt 205中引入的二進制和八進制字面量。

let decLitel: numbe = 6; let hexLitel: numbe = 0xf00d; let binyLitel: numbe = 0b00; let octlLitel: numbe = 0o744;

字符串類型(sting)

JScipt程序的另一項基本操作是處理網頁或服務器端的文本數據。 像其它語言裏一樣,我們使用sting表示文本數據類型。 和JScipt一樣,可以使用雙引號(̶)或單引號(̻)表示字符串。

let nme st: sting = “jck̶

nme = “smith̶

你還可以使用模版字符串,它可以定義多行文本和內嵌表達式。 這種字符串是被反引號包圍(`),並且以${ unme }這種形式嵌入表達式。

let unme: sting = `Gene` let sentence: sting = `Hello, my nme is ${ unme }`

數組類型(y)

TypeScipt像JScipt一樣可以操作數組元素。 有兩種方式可以定義數組。第一種,可以在元素類型後面接上,表示由此類型元素組成的一箇數組:

let list: numbe = [, 2, 3]; //這裏只能寫數字類型 let list: sting = [̺ed̻, ̺blue̻, ̺yellow̻]; //這裏只能寫字符串類型

第二種方式是使用數組泛型,Ay<元素類型>:

let list: Ay<numbe> = [, 2, 3]; //這裏只能寫數字類型 let list: Ay<sting> = [̺ed̻, ̺blue̻, ̺yellow̻]; //這裏只能寫字符串類型

元組類型(tuple)

元組類型允許表示一箇已知元素數量和類型的數組,各元素的類型不必相同。 比如,你可以定義一對值分別爲sting和numbe類型的元組。

let x: [sting, numbe]; x = [̺hello̻, 0] //正確寫法 x = [0, ̺hello̻] //錯誤寫法

官方文檔給出了一些拓展:當訪問一箇已知索引的元素,會得到正確的類型

console.log(x[0].subst()); // OK console.log(x.subst()); // Eo, ̺numbe̻ does not he ̺subst̻

當訪問一箇越界的元素,會使用聯合類型替代:

x[3] = ̺wold̻; // OK, 字符串可以賦值給(sting | numbe)類型 console.log(x[5].toSting()); // OK, ̺sting̻ 和 ̺numbe̻ 都有 toSting x[6] = tue; // Eo, 布爾不是(sting | numbe)類型

枚舉類型(enum)

enum類型是對JScipt標準數據類型的一箇補充。 像C#等其它語言一樣,使用枚舉類型可以爲一組數值賦予友好的名字。

enum Colo {Red, Geen, Blue}

let c: Colo = Colo.Geen; //輸出的值是

默認情況下,從0開始爲元素編號。 你也可以手動的指定成員的數值。 例如,我們將上面的例子改成從開始編號:

enum Colo {Red = , Geen, Blue} let c: Colo = Colo.Geen; //輸出值是2

如果前一箇賦值,後面沒有賦值,那麼後面會根據前面賦值,往後+。或者,全部都採用手動賦值:

enum Colo {Red = , Geen = 2, Blue = 4} let c: Colo = Colo.Geen;

任意類型(ny)

有時候,我們會想要爲那些在編程階段還不清楚類型的變量指定一箇類型。 這些值可能來自於動態的內容,比如來自用戶輸入或第三方代碼庫。 這種情況下,我們不希望類型檢查器對這些值進行檢查而是直接讓它們通過編譯階段的檢查。 那麼我們可以使用ny類型來標記這些變量:

let notSue: ny = 4; notSue = “mybe sting insted̶; notSue = flse; // oky, definitely boolen

當你只知道一部分數據的類型時,ny類型也是有用的。 比如,你有一箇數組,它包含了不同的類型的數據:

let list: ny = [, tue, “fee̶]; list = 00;

oid類型

某種程度上來說,oid類型像是與ny類型相反,它表示沒有任何類型。 當一箇函數沒有返回值時,你通常會見到其返回值類型是oid:

function wnUse(): oid { let(“This is my wning messge̶); }

如果你要返回,根據對應返回的數據,進行選擇:

function wnUse(): numbe { etun 23 }

聲明一箇oid類型的變量沒有什麼大用,因爲你只能爲它賦予undefined和null:

let unusble: oid = undefined;

null和undefined類型

TypeScipt裏,undefined和null兩者各自有自己的類型分別叫做undefined和null。 和oid相似,它們本身的類型用處不是很大:

let u: undefined = undefined; let n: null = null;

默認情況下null和undefined是所有類型的子類型。 就是說你可以把null和undefined賦值給numbe類型的變量。然而,當你指定了RstictNullChecks標記,null和undefined只能賦值給oid和它們各自。 這能避免很多常見的問題。 也許在某處你想傳入一箇sting或null或undefined,你可以使用聯合類型sting | null | undefined。

nee類型

nee類型表示的是那些永不存在的值的類型。 例如,nee類型是那些總是會拋出異常或根本就不會有返回值的函數表達式或箭頭函數表達式的返回值類型; 變量也可能是nee類型,當它們被永不爲真的類型保護所約束時。

nee類型是任何類型的子類型,也可以賦值給任何類型;然而,沒有類型是nee的子類型或可以賦值給nee類型(除了nee本身之外)。 即使ny也不可以賦值給nee。下面是一些返回nee類型的函數:

// 返回nee的函數必須存在無法達到的終點 function eo(messge: sting): nee { thow new Eo(messge); }

// 推斷的返回值類型爲nee function fil() { etun eo(“Something filed̶); }

// 返回nee的函數必須存在無法達到的終點 function infiniteLoop(): nee { while (tue) { } }