Typescript中的裝飾器


1 類裝飾器

普通類裝飾器

image

類裝飾器傳參

image

編譯源碼:=> 更好理解裝飾器寫法

裝飾器封裝

var __decorate = function (decorators, target, key, desc) {

      ...

      return Object.defineProperty(target, key, r)

      //這里對應(object,propertype,propertypeDeclaration)

};

//Object.defineProperty()的作用就是直接在一個對象上定義一個新屬性,或者修改一個已經存在的屬性

function changeClass2(param) {

      return function (target) {

           target.prototype.title = param;

           target.prototype.add = function () {

                  console.log('add');

           };

      };

}

var DemoClass2 = /** @class */ (function () {

         function DemoClass2() {

         }

         DemoClass2 = __decorate([ //裝飾器名字,目標類

              changeClass2('hello') //傳入hello參數

         ], DemoClass2);

         return DemoClass2;//返回目標類

}());

修改構造函數的類裝飾器

image

2 屬性裝飾器

image

注意:這里的target是指實例對象,而類裝飾器指向的是類本身

3 方法裝飾器

image

方法參數裝飾器

image

4 裝飾器執行順序

裝飾器可以同時使用多個因此需要知道其執行順序

不同類型裝飾器執行順序:屬性>方法>方法參數>類

在多個同類型的裝飾器中的執行順序 => 從后向前執行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM