一文說明,TypeScript 的裝飾器

●裝飾器 ( Decorators )
●注意 : 裝飾器目前是一項實驗性特性,在未來的版本中可能會發(fā)生改變
●裝飾器一般使用在以下幾個地方
○類
○類屬性
○類方法
○類方法的參數(shù)
○通過這些我們也能看得出來, 其實說白了, 就是在類中會使用到裝飾器
●裝飾器的意義 :
○說白了, 裝飾器就是一個方法, 可以注入到 類, 屬性, 方法 中對其進行一些擴展
○讓我們的一個類變得更加的多樣化, 更加的完善
類裝飾器
●其實就是自己書寫一個方法, 對一個類進行擴展
●我們就可以在定義這個類的時候, 使用 fn 方法對其進行裝飾
●看似好像沒有什么用處
○其實裝飾器主要的作用就是在類的原型上去擴展一些方法
○來看一個例子吧
原始形態(tài)
●我們發(fā)現(xiàn)每一個類里面都會有一個 play 一個 study 一個 sleep 方法
●這個時候, 我們就是在重復(fù)的書寫代碼
●我們這個時候就想到一個內(nèi)容, 叫做繼承
繼承實現(xiàn)
●我們發(fā)現(xiàn)效果是可以實現(xiàn)的
裝飾器實現(xiàn)
●同樣的內(nèi)容, 我們用裝飾器也可以實現(xiàn), 我們發(fā)現(xiàn)和繼承沒有什么區(qū)別
●但是, 我們?nèi)绻醚b飾器實現(xiàn)的話, 可以通過裝飾器, 把不同的內(nèi)容分開, 實現(xiàn)更加靈活
●這樣看起來是不是靈活了很多呢
類屬性裝飾器
●顧名思義, 就是用來對于類里面屬性的擴展
●注意 : 可以修改屬性的值, 但是不能修改該屬性的類型限制
●這樣我們在定義類的時候, 可以根據(jù)裝飾器對于某些屬性進行修飾
類方法的裝飾器
●同樣的, 我們的方法裝飾器就是用來對方法進行一些修飾
●這里其實就是利用裝飾器把函數(shù)給換掉了
類方法的參數(shù)裝飾器
●這種裝飾器就是用來修飾類身上的方法中的參數(shù)的
●注意
○只能做監(jiān)控參數(shù)是否傳遞, 沒辦法修改
○必須要使用裝飾器工廠形式
○因為目前的裝飾器機制還不是很完善
●輸出結(jié)果
●說白了, 各種裝飾器就是對對應(yīng)的內(nèi)容進行一些修飾而已
●目前還沒有那么完善, 期待后期 TS 的更新和完善
●我相信完善以后的裝飾器會是非常強大的存在