第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【十月打卡】第63天 TypeScript(19)

標(biāo)簽:
Typescript

访问器装饰器

访问器装饰器有3个参数分别是:

  • target:原型
  • key:属性名
  • descriptor: 该属性的描述符

只能在getter或者setter其中一个增加装饰器,不可以同时加

function getNameDecoration(target: any, key: string, descriptor: any) {
  console.log(target, key, descriptor)
}

class Test {
  constructor(private _name: string) {}

  @getNameDecoration
  get name() {
    return this._name;
  }

  set name(val: string) {
    this._name = val;
  }
}

const test = new Test('hello');

console.log(test.name);

属性装饰器

属性装饰器没有descriptor描述符,只有target和key

  • target:原型
  • key:属性名

不能通过target[key]修改实例上的属性,因为target指向原型,修改的是原型上的属性,不是实例的属性。

function getNameDecoration(target: any, key: string) {
  console.log(target, key);
}

class Test {
  @getNameDecoration
  name = 'tz';
}

const test = new Test();
test.name = 'hello';
console.log(test.name);

参数装饰器

参数装饰器可以对静态方法以及原型方法的参数进行处理
不同的是第三个参数是当前参数的索引值

target:静态方法执行类本身;原型方法指向原型
key:方法名(注意:不是参数名)
index: 当前参数的索引值
function paramsDecoration(target: any, key: string, index: number) {
  console.log(target, key, index);
}

class Test {
  static getInfo(@paramsDecoration name: string, age: number) {}

  getInfo(@paramsDecoration name: string, age: number) {}
}

const test = new Test();

装饰器的应用

如下 userInfo如果为undefined,直接调用会报错;
如果单独给每个方法增加 try catch 有些冗余;
装饰器可以应用到此类场景

const userInfo: any = undefined;

function catchError(msg: string) {
  return function (target: any, key: string, descriptor: any) {
    const fn = descriptor.value;

    descriptor.value = function () {
      try {
        fn();
      } catch (e) {
        console.log(`${msg}找不到`);
      }
    };
  };
}

class Test {
  @catchError('name')
  getName() {
    return userInfo.name;
  }
  @catchError('age')
  getAge() {
    return userInfo.age;
  }
}
const test = new Test();
test.getName();
test.getAge();
點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消