最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

TypeScript 高級(jí)語(yǔ)法——Class

2023-07-21 13:08 作者:沒(méi)用軟件開(kāi)發(fā)日記  | 我要投稿

????TypeScript完全支持ES2015中引入的class關(guān)鍵字。對(duì)于初中級(jí)前端開(kāi)發(fā)人員來(lái)說(shuō)class可能近乎于是一個(gè)沒(méi)用的語(yǔ)言特性,那么為什么class會(huì)被引入?class帶給我們的是一整個(gè)面向?qū)ο蟮捏w系和在服務(wù)端踐行有效的面向?qū)ο蟮脑O(shè)計(jì)模式,并且相對(duì)于ES5降低了JS語(yǔ)言面向?qū)ο蠡拈T檻,同時(shí)配合裝飾器的使用獲得依賴注入的能力。

這樣我們就獲得了一個(gè)最簡(jiǎn)單的類,類中包含兩個(gè)數(shù)值類型字段x和y,類名稱為Point使用class關(guān)鍵字標(biāo)記,使用new關(guān)鍵字調(diào)用Point的構(gòu)造函數(shù)創(chuàng)建對(duì)象pt。最簡(jiǎn)單的class使用就完成了。

class、interface、type的區(qū)別

????interface和type作為TS引入的類型關(guān)鍵字是JS中沒(méi)有的,也就是說(shuō)在TS文件打包后interface和type將會(huì)消失不見(jiàn)。而class不一樣,作為ES2015加入的關(guān)鍵字,class聲明是有真實(shí)存在的JS實(shí)體的。

????在我們引入interface和type時(shí)一定會(huì)使用type關(guān)鍵字標(biāo)記類型導(dǎo)入,這樣打包器就不會(huì)去執(zhí)行引入的動(dòng)作。但是class則不一定,當(dāng)我們使用new關(guān)鍵字實(shí)例化類對(duì)象時(shí)就不能使用type關(guān)鍵字導(dǎo)入,會(huì)提示無(wú)法操作異常,因?yàn)楸籺ype標(biāo)記的導(dǎo)入在打包時(shí)會(huì)被忽略掉了也就無(wú)法正常使用導(dǎo)入的內(nèi)容。

構(gòu)造函數(shù)

????構(gòu)造函數(shù)是僅存在于class中的一種特殊函數(shù),構(gòu)造函數(shù)無(wú)法像普通函數(shù)一樣被調(diào)用,只能通過(guò)new關(guān)鍵字在類實(shí)例化對(duì)象時(shí)被調(diào)用一次。構(gòu)造函數(shù)的責(zé)任是初始化類對(duì)象,如果省略不寫則默認(rèn)生成一個(gè)空的構(gòu)造函數(shù)。

????以上是構(gòu)造函數(shù)的簡(jiǎn)單示例,當(dāng)使用new操作符實(shí)例化A類對(duì)象時(shí)傳入?yún)?shù)Taro,Taro會(huì)傳入構(gòu)造函數(shù)第一個(gè)參數(shù)的位置也就是name,構(gòu)造函數(shù)中的this指向class實(shí)例化的對(duì)象,也就是說(shuō)user的name字段值會(huì)變成Taro。在class中定義age時(shí)使用了“?:”的定義方式,標(biāo)明age字段在實(shí)例化時(shí)是可空的。這種寫法表示class A有兩個(gè)公開(kāi)字段(public),公開(kāi)字段的意思是在類的實(shí)例user上可以訪問(wèn)到的字段。

????類字段還可以指定默認(rèn)值:

? ? 下面演示簡(jiǎn)寫方式:

????TS提供了簡(jiǎn)單寫法極大的簡(jiǎn)化了類的定義,通過(guò)調(diào)節(jié)構(gòu)造函數(shù)中參數(shù)的訪問(wèn)級(jí)別修飾詞就可以達(dá)到定義公開(kāi)字段或者私有字段的目的。

????當(dāng)我們?cè)跇?gòu)造函數(shù)內(nèi)調(diào)用其他函數(shù)來(lái)初始化類內(nèi)字段時(shí),TS會(huì)出現(xiàn)無(wú)法檢測(cè)的情況,這個(gè)時(shí)候我們可以使用“!:”來(lái)標(biāo)明類內(nèi)字段一定會(huì)以某種方式被初始化且不為undefined。

????比如我們?cè)谑褂肈ixie這個(gè)庫(kù)的時(shí)候就會(huì)用到這種語(yǔ)法,因?yàn)轭悆?nèi)的字段是Dixie負(fù)責(zé)初始化的。

????在這個(gè)例子中我們可以看到在類內(nèi)部的字段訪問(wèn)都是通過(guò)“this”進(jìn)行的,所以在使用類對(duì)象時(shí)如果涉及到結(jié)構(gòu)操作(const { name } = new A( )),調(diào)用時(shí)都需要為解構(gòu)出來(lái)的對(duì)象綁定this。

????類內(nèi)字段可以用readonly標(biāo)記為只讀字段,這種字段只可以在構(gòu)造函數(shù)內(nèi)賦值或者指定直接指定初始值,被賦值后就不可再更改。


TypeScript 高級(jí)語(yǔ)法——Class的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
桑日县| 建宁县| 长丰县| 泽州县| 延吉市| 漯河市| 黔南| 泰兴市| 蛟河市| 和龙市| 渭南市| 大理市| 纳雍县| 桂东县| 腾冲县| 营山县| 喀什市| 台中县| 柏乡县| 江达县| 鹿邑县| 纳雍县| 科尔| 手机| 荣昌县| 杭州市| 太康县| 德安县| 台东县| 宁德市| 黎川县| 黄石市| 攀枝花市| 灵璧县| 隆化县| 高州市| 崇阳县| 泌阳县| 西安市| 汉阴县| 达日县|