簡介
- 本次介紹
any
芯杀、number
饥追、boolean
图仓、string
、array
但绕、tuple
這5種數(shù)據(jù)類型
任意any
類型
-
在編程階段不清楚變量的數(shù)據(jù)類型救崔, 這些變量可能來自于動(dòng)態(tài)的內(nèi)容,比如來自用戶輸入或第三方代碼庫。在 這種情況下帚豪,我們不希望類型檢查器對這些值進(jìn)行檢查而是直接讓它們通過編譯階段的檢查碳竟,那么我們可以使用any類型來標(biāo)記這些變量
let value1:any = 1; let value2:any = 'a', console.log(value1); console.log(value2); // 這就是默認(rèn)情況下JavaScript變量的定義和使用情況
-
但是在使用any數(shù)據(jù)類型時(shí),TypsScript不能自動(dòng)識別該數(shù)值是那種數(shù)據(jù)類型狸臣,那么在寫代碼的時(shí)候,編譯器無法提供相應(yīng)的方法和屬性提示昌执,這就是any類型的一個(gè)弊端
/*例如: 我們拿到了一個(gè)any類型的變量, 但是我們明確的知道這個(gè)變量中保存的是字符串類型烛亦,此時(shí)我們就可以通過類型斷言告訴編譯器,這個(gè)變量是一個(gè)字符串類型懂拾,我們就可以通過類型斷言將any類型轉(zhuǎn)換成string類型, 使用字符串類型中相關(guān)的方法了 */ let str:any = 'it666'; let len = str.length; // 在輸入length的時(shí)候沒有語法提示煤禽,因?yàn)榫幾g器不能確定改變是否有l(wèi)ength屬性 console.log(len)
數(shù)字number
類型
和JavaScript一樣,TypeScript里的所有數(shù)字都是浮點(diǎn)數(shù)岖赋,他們都是數(shù)字
number
類型-
除了支持
十進(jìn)制
和十六進(jìn)制
字面量檬果,TypeScript還支持ECMAScript 2015中引入的二進(jìn)制
和八進(jìn)制
字面量let value1: number = 6; // 十進(jìn)制 let value2: number = 0xf00d; // 十六進(jìn)制 let value3: number = 0b1010; // 二進(jìn)制 let value4: number = 0o744; // 八進(jìn)制 console.log(value1); // 6 console.log(value2); // 61453 console.log(value3); // 10 console.log(value4); // 484
-
當(dāng)然也可以先定義變量,在進(jìn)行變量的初始化
let val:number; val = 123; console.log(val);
布爾boolean
類型
-
布爾類型是最基本的數(shù)據(jù)類型唐断,它只有兩個(gè)值
true
和false
let value1:boolean; let value2:boolean; value1 = true; value2 = false; console.log(value1) console.log(value2)
字符串string
類型
-
和JavaScript一樣选脊,通過使用雙引號(
"
)或單引號('
)表示字符串類型let val:string; val = '123'; console.log(val)
-
可以使用
模版字符串
let a:number = 34; let val:string; val = `我是的年齡為${a}`; console.log(val)
-
可以使用
字符串拼接
let a:number = 34; let val:string; val = '我是的年齡為' + a; console.log(val)
數(shù)組類型
-
TypeScript像JavaScript一樣可以操作數(shù)組元素,有兩種方式可以定義數(shù)組脸甘。
-
方式一:可以在元素類型后面接上[]恳啥,表示由此類型元素組成的一個(gè)數(shù)組
-
定義只能存儲單個(gè)數(shù)據(jù)類型,
let 變量名稱:數(shù)據(jù)的類型[];
let arr:number[]; arr = [1,2,3]; arr = [1,'2',3]; // 報(bào)錯(cuò)
-
定義能存儲多個(gè)數(shù)據(jù)類型丹诀,
let 變量名稱:(數(shù)據(jù)的類型 | ...)[];
let arr:(number | string)[]; arr = [1,'2',3];
-
定義能存儲任意數(shù)據(jù)類型钝的,使用
any
類型let arr:any[]; arr = [1,'2',true];
-
-
方式二:使用數(shù)組泛型
-
定義只能存儲單個(gè)數(shù)據(jù)類型,
let 變量名稱:Array<數(shù)據(jù)的類型>
let arr:Array<number>; arr = [1,2,3]; arr = [1,'2',3]; // 報(bào)錯(cuò)
-
定義能存儲多個(gè)數(shù)據(jù)類型铆遭,
let 變量名稱:Array<數(shù)據(jù)的類型 | ...>
let arr:Array<number | string>; arr = [1,'2',3];
-
定義能存儲任意數(shù)據(jù)類型硝桩,使用
any
類型let arr:Array<any>; arr = [1,'2',true];
-
元組類型
表示一個(gè)已知元素?cái)?shù)量和類型的數(shù)組,各元素的類型不必相同
-
let 變量名稱:[數(shù)據(jù)類型1, 數(shù)據(jù)類型2, 數(shù)據(jù)類型3, 數(shù)據(jù)類型1, ...]
let arr:[string, number, boolean, string]; /* 1.表示定義了一個(gè)名稱叫做arr的, 這個(gè)數(shù)組中將來可以存儲3個(gè)元素 2.第一個(gè)元素必須是字符串類型, 第二個(gè)元素必須是數(shù)字類型, 第三個(gè)元素必須是布爾類型, 第四個(gè)元素必須是字符串類型 3.超過或少于指定的長度會報(bào)錯(cuò) */ arr = ['a', 1, true, 'b']; console.log(arr); arr = ['a', 1, true, 'b', 1]; // 報(bào)錯(cuò) arr = ['a', 1, true]; // 報(bào)錯(cuò)