2022-08-18 TS 裝飾器的引入使用

背景:目前項(xiàng)目里面并未引入裝飾器,只是運(yùn)用了高階組件,高階組件的使用在一定程度上提高了代碼的復(fù)用性,但是裝飾器可以更靈活的達(dá)到效果和目的,所以準(zhǔn)備將裝飾器的概念引入到項(xiàng)目里面去且不限于此,提高代碼的復(fù)用性和可拓展性,增加對react的使用范圍,從而提高開發(fā)效率,提高團(tuán)隊(duì)的開發(fā)水平。

裝飾器的概念:裝飾器是一種特殊類型的聲明,它能夠被附加到類、方法、訪問符、屬性或參數(shù)上。 這種解釋太抽象了 我的理解就是通俗的講,他是一個(gè)方法,可以注入到類、屬性、方法、參數(shù)上,用于擴(kuò)展類、屬性、方法、參數(shù)的功能。 打個(gè)比方 你一個(gè)組件不具備一個(gè)更換背景顏色的功能,但是我使用了一個(gè)裝飾器(decorators) 那么就可以使我的這個(gè)組件具備更換背景顏色的功能了,這就是對組件擴(kuò)展的一個(gè)簡單的體現(xiàn);

常見的裝飾器有:普通裝飾器(無法傳參)、裝飾器工廠(可傳參)

裝飾器類型:

類裝飾器

屬性裝飾器

方法裝飾器

函數(shù)參數(shù)裝飾器

類裝飾器

類裝飾器在類聲明之前被聲明(緊靠著類聲明);

類裝飾器應(yīng)用于類構(gòu)造函數(shù),可以用來監(jiān)視、修改或替換類定義;

類的構(gòu)造函數(shù)將作為唯一參數(shù)傳遞給裝飾器;

如果類裝飾器返回一個(gè)值,它會使用返回的構(gòu)造函數(shù)替換原來的類聲明;




屬性裝飾器

屬性裝飾器用來裝飾類的成員屬性;

在運(yùn)行時(shí)當(dāng)作函數(shù)被調(diào)用,傳入下列2個(gè)參數(shù):

(1)對于靜態(tài)成員來說是類的構(gòu)造函數(shù),對于實(shí)例成員是類的原型對象

(2)屬性的名字



方法裝飾器

方法裝飾器用來裝飾類的方法(靜態(tài)方法和實(shí)例方法都可以);

方法裝飾器可以監(jiān)視、修改或替換方法定義;

方法裝飾器會在運(yùn)行時(shí)傳入下列3個(gè)參數(shù):

(1)對于靜態(tài)成員來說是類的構(gòu)造函數(shù),對于實(shí)例成員是類的原型對象。

(2)方法的名字。

(3)方法的屬性描述符。




函數(shù)參數(shù)裝飾器

參數(shù)裝飾器表達(dá)式會在運(yùn)行時(shí)當(dāng)作函數(shù)被調(diào)用,可以使用參數(shù)裝飾器為類的原型增加一些元素?cái)?shù)據(jù),傳入下列3個(gè)參數(shù):

(1)對于靜態(tài)成員來說是類的構(gòu)造函數(shù),對于實(shí)例成員是類的原型對象。

(2)方法的名字。

(3)參數(shù)在函數(shù)參數(shù)列表中的索引。


裝飾器執(zhí)行順序

裝飾器工廠需要先求值,再裝飾,求值順序是由上到下

裝飾器可以直接求值,裝飾順序是由下到上



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容