前言
認(rèn)識(shí)了 TypeScript 中的基礎(chǔ)類型,接下來(lái)當(dāng)然是變量聲明的相關(guān)學(xué)習(xí)了。
聲明多維數(shù)組
假如有這么一個(gè)聲明:
let arr3: number[][][];
想要知道 arr3 的具體類型,其分析步驟如下:
可以看到,類型拆解是從右向左的赞咙,對(duì)應(yīng)到具體變量值上就是從外向內(nèi)一層層拆解的。
這里只是舉個(gè)例子糟港,稍微有點(diǎn)經(jīng)驗(yàn)的人一眼就能判斷出 arr3 是一個(gè)三維數(shù)組攀操。但是,授人以魚(yú)不如授人以漁秸抚,這個(gè)分析方法卻適用于絕大多數(shù)復(fù)雜數(shù)據(jù)類型分析速和。
屬性重命名
在有了 ES6 的解構(gòu)賦值之后,我們可以這么聲明變量:
let personInfo1 = {
name: "編程三昧",
age:22
}
let {name: nameP, age: ageP} = personalInfo1;
以上代碼聲明了 nameP 和 ageP 兩個(gè)變量剥汤。需要注意的是:變量聲明中颠放,冒號(hào)后面跟的不是數(shù)據(jù)類型,而是新聲明來(lái)替代原對(duì)象屬性值的變量吭敢。
如果在 TypeScript 中碰凶,要指定 nameP 和 ageP 的數(shù)據(jù)類型,需要這么寫:
let { name: nameP, age: ageP }: { name: string; age: number } = personInfo1;
其實(shí)這個(gè)類型指定可以放在對(duì)象聲明中,指定對(duì)象每一項(xiàng)屬性值的類型:
let personInfo1: { name: string; age: number } = {
name: "編程三昧",
age: 22
};
personInfo1.name = 12; // Error 不能將類型“number”分配給類型“string”
// let {name: nameP, age: ageP} = personInfo1;
let { name: nameP, age: ageP } = personInfo1;
nameP = 12; // Error 不能將類型“number”分配給類型“string”
let 和 const 的暫時(shí)性死區(qū)
以下代碼在 TypeScript 中不會(huì)報(bào)錯(cuò)欲低,但是在實(shí)際運(yùn)行中會(huì)報(bào)錯(cuò)辕宏。
function foo(): number {
return a1;
}
foo();
let a1: number = 12;
實(shí)際運(yùn)行報(bào)錯(cuò):
我自己的理解是:靜態(tài)編譯時(shí)只負(fù)責(zé)檢測(cè)數(shù)據(jù)類型是否正確,而動(dòng)態(tài)運(yùn)行時(shí)才會(huì)檢測(cè)語(yǔ)法邏輯錯(cuò)誤砾莱,恰好暫時(shí)性死區(qū)是在運(yùn)行時(shí)才產(chǎn)生的瑞筐。
總結(jié)
以上就是我在學(xué)習(xí) TypeScript 變量聲明時(shí)所記錄的注意事項(xiàng)和總結(jié)。
~
~ 本文完腊瑟,感謝閱讀聚假!
~
學(xué)習(xí)有趣的知識(shí),結(jié)識(shí)有趣的朋友闰非,塑造有趣的靈魂膘格!
大家好,我是〖編程三昧〗的作者 隱逸王财松,我的公眾號(hào)是『編程三昧』瘪贱,歡迎關(guān)注,希望大家多多指教游岳!