TypeScript 的变量定义
Variable Declaration
let 和 const 是 JavaScript 中變量聲明的兩個(gè)相對(duì)較新的概念。 正如我們之前提到的,let 在某些方面類似于 var,但允許用戶避免用戶在 JavaScript 中遇到的一些常見(jiàn)“陷阱”。
const 是 let 的增強(qiáng),因?yàn)樗梢苑乐怪匦路峙浣o變量。
變量解構(gòu) - Array destructuring
let input = [1, 2]; let [first, second] = input; console.log(first); // outputs 1 console.log(second); // outputs 2這將創(chuàng)建兩個(gè)名為 first 和 second 的新變量。 這相當(dāng)于使用索引,但更方便:
first = input[0]; second = input[1];同樣適用于函數(shù)參數(shù)列表:
function f([first, second]: [number, number]) {console.log(first);console.log(second); } f([1, 2]);可以配合 … 語(yǔ)法使用:
let [first, ...rest] = [1, 2, 3, 4]; console.log(first); // outputs 1 console.log(rest); // outputs [ 2, 3, 4 ] let [, second, , fourth] = [1, 2, 3, 4]; console.log(second); // outputs 2 console.log(fourth); // outputs 4Object destructuring
這在 SAP Spartacus 的源代碼里比較多見(jiàn)。
let o = {a: "foo",b: 12,c: "bar", }; let { a, b } = o;這會(huì)從 o.a 和 o.b 創(chuàng)建新變量 a 和 b。 請(qǐng)注意,如果不需要,可以跳過(guò) c。
請(qǐng)注意,我們必須用括號(hào)將這個(gè)語(yǔ)句括起來(lái)。 JavaScript 通常將 大括號(hào) 解析為塊的開(kāi)始。
您可以使用以下語(yǔ)法為對(duì)象中的其余項(xiàng)目創(chuàng)建變量…:
let { a, ...passthrough } = o; let total = passthrough.b + passthrough.c.length;給屬性設(shè)置別名
let { a: newName1, b: newName2 } = o;這里的語(yǔ)法開(kāi)始變得混亂。 您可以將 a:newName1 讀作“a as newName1”。 方向是從左到右,和下列代碼等價(jià):
let newName1 = o.a; let newName2 = o.b;這里的冒號(hào),及其容易同類型定義語(yǔ)法混淆起來(lái)。
Spread Operator
展開(kāi)運(yùn)算符與解構(gòu)相反。 它允許您將一個(gè)數(shù)組擴(kuò)展到另一個(gè)數(shù)組中,或者將一個(gè)對(duì)象擴(kuò)展到另一個(gè)對(duì)象中。 例如:
let first = [1, 2]; let second = [3, 4]; let bothPlus = [0, ...first, ...second, 5];這給 bothPlus 值 [0, 1, 2, 3, 4, 5]。 傳播創(chuàng)建第一個(gè)和第二個(gè)的淺拷貝。 它們不會(huì)因 spread Operator 而改變。
spread 操作符也能應(yīng)用在對(duì)象上:
let defaults = { food: "spicy", price: "$$", ambiance: "noisy" }; let search = { ...defaults, food: "rich" };spread 后對(duì)象的值為:
{ food: "rich", price: "$$", ambiance: "noisy" }和數(shù)組展開(kāi)一樣,它是從左到右進(jìn)行的,但結(jié)果仍然是一個(gè)對(duì)象。 這意味著在擴(kuò)展對(duì)象中較晚出現(xiàn)的屬性會(huì)覆蓋較早出現(xiàn)的屬性。
Object 的 spread 操作符有一些局限性:
首先,它只包含對(duì)象自己的可枚舉屬性。 基本上,這意味著在傳播對(duì)象實(shí)例時(shí)會(huì)丟失方法:
class C {p = 12;m() {} } let c = new C(); let clone = { ...c }; clone.p; // ok clone.m(); // error!總結(jié)
以上是生活随笔為你收集整理的TypeScript 的变量定义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LATEX排版总结
- 下一篇: 求生之路2喷漆怎么自定义?求生之路2喷漆