TypeScript 數(shù)據(jù)類(lèi)型
TypeScript 包含的數(shù)據(jù)類(lèi)型如下表:
數(shù)據(jù)類(lèi)型 | 關(guān)鍵字 | 描述 |
---|---|---|
任意類(lèi)型 | any | 聲明為 any 的變量可以賦予任意類(lèi)型的值。 |
數(shù)字類(lèi)型 | number |
雙精度 64 位浮點(diǎn)值。它可以用來(lái)表示整數(shù)和分?jǐn)?shù)。 let binaryLiteral: number = 0b1010; // 二進(jìn)制 let octalLiteral: number = 0o744; // 八進(jìn)制 let decLiteral: number = 6; // 十進(jìn)制 let hexLiteral: number = 0xf00d; // 十六進(jìn)制 |
字符串類(lèi)型 | string |
一個(gè)字符系列,使用單引號(hào)(')或雙引號(hào)(")來(lái)表示字符串類(lèi)型。反引號(hào)(`)來(lái)定義多行文本和內(nèi)嵌表達(dá)式。 let name: string = "Codebaoku"; let years: number = 5; let words: string = `您好,今年是 ${ name } 發(fā)布 ${ years + 1} 周年`; |
布爾類(lèi)型 | boolean |
表示邏輯值:true 和 false。 let flag: boolean = true; |
數(shù)組類(lèi)型 | 無(wú) |
聲明變量為數(shù)組。 // 在元素類(lèi)型后面加上[] let arr: number[] = [1, 2]; // 或者使用數(shù)組泛型 let arr: Array<number> = [1, 2];</number> |
元組 | 無(wú) |
元組類(lèi)型用來(lái)表示已知元素?cái)?shù)量和類(lèi)型的數(shù)組,各元素的類(lèi)型不必相同,對(duì)應(yīng)位置的類(lèi)型需要相同。 let x: [string, number]; x = ['Codebaoku', 1]; // 運(yùn)行正常 x = [1, 'Codebaoku']; // 報(bào)錯(cuò) console.log(x[0]); // 輸出 Runoob |
枚舉 | enum |
枚舉類(lèi)型用于定義數(shù)值集合。 enum Color {Red, Green, Blue}; let c: Color = Color.Blue; console.log(c); // 輸出 2 |
void | void |
用于標(biāo)識(shí)方法返回值的類(lèi)型,表示該方法沒(méi)有返回值。 function hello(): void { alert("Hello Codebaoku"); } |
null | null |
表示對(duì)象值缺失。 |
undefined | undefined |
用于初始化變量為一個(gè)未定義的值 |
never | never |
never 是其它類(lèi)型(包括 null 和 undefined)的子類(lèi)型,代表從不會(huì)出現(xiàn)的值。 |
注意:TypeScript 和 JavaScript 沒(méi)有整數(shù)類(lèi)型。
1. Any 類(lèi)型
任意值是 TypeScript 針對(duì)編程時(shí)類(lèi)型不明確的變量使用的一種數(shù)據(jù)類(lèi)型,它常用于以下三種情況。
1、變量的值會(huì)動(dòng)態(tài)改變時(shí),比如來(lái)自用戶(hù)的輸入,任意值類(lèi)型可以讓這些變量跳過(guò)編譯階段的類(lèi)型檢查,示例代碼如下:
let x: any = 1; // 數(shù)字類(lèi)型 x = 'I am who I am'; // 字符串類(lèi)型 x = false; // 布爾類(lèi)型
改寫(xiě)現(xiàn)有代碼時(shí),任意值允許在編譯時(shí)可選擇地包含或移除類(lèi)型檢查,示例代碼如下:
let x: any = 4; x.ifItExists(); // 正確,ifItExists方法在運(yùn)行時(shí)可能存在,但這里并不會(huì)檢查 x.toFixed(); // 正確
定義存儲(chǔ)各種類(lèi)型數(shù)據(jù)的數(shù)組時(shí),示例代碼如下:
let arrayList: any[] = [1, false, 'fine']; arrayList[1] = 100;
2. Null 和 Undefined
1) null
在 JavaScript 中 null 表示 "什么都沒(méi)有"。
null是一個(gè)只有一個(gè)值的特殊類(lèi)型。表示一個(gè)空對(duì)象引用。
用 typeof 檢測(cè) null 返回是 object。
2) undefined
在 JavaScript 中, undefined 是一個(gè)沒(méi)有設(shè)置值的變量。
typeof 一個(gè)沒(méi)有值的變量會(huì)返回 undefined。
Null 和 Undefined 是其他任何類(lèi)型(包括 void)的子類(lèi)型,可以賦值給其它類(lèi)型,如數(shù)字類(lèi)型,此時(shí),賦值后的類(lèi)型會(huì)變成 null 或 undefined。而在TypeScript中啟用嚴(yán)格的空校驗(yàn)(--strictNullChecks)特性,就可以使得null 和 undefined 只能被賦值給 void 或本身對(duì)應(yīng)的類(lèi)型,示例代碼如下:
// 啟用 --strictNullChecks let x: number; x = 1; // 運(yùn)行正確 x = undefined; // 運(yùn)行錯(cuò)誤 x = null; // 運(yùn)行錯(cuò)誤
上面的例子中變量 x 只能是數(shù)字類(lèi)型。如果一個(gè)類(lèi)型可能出現(xiàn) null 或 undefined, 可以用 | 來(lái)支持多種類(lèi)型,示例代碼如下:
// 啟用 --strictNullChecks let x: number | null | undefined; x = 1; // 運(yùn)行正確 x = undefined; // 運(yùn)行正確 x = null; // 運(yùn)行正確
3. never 類(lèi)型
never 是其它類(lèi)型(包括 null 和 undefined)的子類(lèi)型,代表從不會(huì)出現(xiàn)的值。這意味著聲明為 never 類(lèi)型的變量只能被 never 類(lèi)型所賦值,在函數(shù)中它通常表現(xiàn)為拋出異常或無(wú)法執(zhí)行到終止點(diǎn)(例如無(wú)限循環(huán)),示例代碼如下:
let x: never; let y: number; // 運(yùn)行錯(cuò)誤,數(shù)字類(lèi)型不能轉(zhuǎn)為 never 類(lèi)型 x = 123; // 運(yùn)行正確,never 類(lèi)型可以賦值給 never類(lèi)型 x = (()=>{ throw new Error('exception')})(); // 運(yùn)行正確,never 類(lèi)型可以賦值給 數(shù)字類(lèi)型 y = (()=>{ throw new Error('exception')})(); // 返回值為 never 的函數(shù)可以是拋出異常的情況 function error(message: string): never { throw new Error(message); } // 返回值為 never 的函數(shù)可以是無(wú)法被執(zhí)行到的終止點(diǎn)的情況 function loop(): never { while (true) {} }
- JavaScript如何對(duì)負(fù)數(shù)開(kāi)方
- javascript報(bào)錯(cuò)如何調(diào)試
- javascript中如何完成全選
- javascript如何刪除網(wǎng)頁(yè)數(shù)據(jù)
- javascript怎么實(shí)現(xiàn)登錄界面成功跳轉(zhuǎn)
- javascript如何輸出當(dāng)前時(shí)間
- javascript標(biāo)簽的下拉框如何定位
- javascript怎么實(shí)現(xiàn)遠(yuǎn)程通信
- javascript中怎么嵌套php腳本
- javascript怎么設(shè)置三色燈
- 怎么開(kāi)發(fā)javascript錯(cuò)誤上報(bào)工具
- javascript如何設(shè)置文本框
- TypeScript 循環(huán)
- TypeScript Number
- TypeScript Array 數(shù)組
- TypeScript 元組
- TypeScript 聯(lián)合類(lèi)型
- TypeScript 類(lèi)
- TypeScript 對(duì)象
- TypeScript 命名空間