前言
認識了 TypeScript 中的基礎類型,接下來當然是變量聲明的相關學習了。
聲明多維數組
假如有這麼一個聲明:
let arr3: number[][][];
想要知道 arr3 的具體類型,其分析步驟如下:
可以看到,類型拆解是從右向左的,對應到具體變量值上就是從外向內一層層拆解的。
這裏只是舉個例子,稍微有點經驗的人一眼就能判斷出 arr3 是一個三維數組。但是,授人以魚不如授人以漁,這個分析方法卻適用於絕大多數複雜數據類型分析。
屬性重命名
在有了 ES6 的解構賦值之後,我們可以這麼聲明變量:
let personInfo1 = {
name: "編程三昧",
age:22
}
let {name: nameP, age: ageP} = personalInfo1;
以上代碼聲明瞭 nameP 和 ageP 兩個變量。需要注意的是:變量聲明中,冒號後面跟的不是數據類型,而是新聲明來替代原對象屬性值的變量。
如果在 TypeScript 中,要指定 nameP 和 ageP 的數據類型,需要這麼寫:
let { name: nameP, age: ageP }: { name: string; age: number } = personInfo1;
其實這個類型指定可以放在對象聲明中,指定對象每一項屬性值的類型:
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 的暫時性死區
以下代碼在 TypeScript 中不會報錯,但是在實際運行中會報錯。
function foo(): number {
return a1;
}
foo();
let a1: number = 12;
實際運行報錯:
我自己的理解是:靜態編譯時只負責檢測數據類型是否正確,而動態運行時纔會檢測語法邏輯錯誤,恰好暫時性死區是在運行時才產生的。
總結
以上就是我在學習 TypeScript 變量聲明時所記錄的注意事項和總結。
~
~ 本文完,感謝閱讀!
~
學習有趣的知識,結識有趣的朋友,塑造有趣的靈魂!