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

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

【十月打卡】第64天 TypeScript(20)

標(biāo)簽:
Typescript

reflect-metadata

Reflect Metadata 是 ES7 的一个提案,它主要用来在声明的时候添加和读取元数据。

我们想要使用这个功能,可以安装reflect-metadata

// 安装
npm i reflect-metadata --save

// 引入
import 'reflect-metadata'

API用法

namespace Reflect {
  // 用于装饰器
  metadata(k, v): (target, property?) => void

  // 在对象上面定义元数据
  defineMetadata(k, v, o, p?): void

  // 是否存在元数据
  hasMetadata(k, o, p?): boolean
  hasOwnMetadata(k, o, p?): boolean

  // 获取元数据
  getMetadata(k, o, p?): any
  getOwnMetadata(k, o, p?): any

  // 获取所有元数据的 Key
  getMetadataKeys(o, p?): any[]
  getOwnMetadataKeys(o, p?): any[]

  // 删除元数据
  deleteMetadata(k, o, p?): boolean
}

示例

class Test {
  getName() {}
}

class Teacher extends Test {}

Reflect.defineMetadata('name', '小明', Test);

const isExist = Reflect.hasMetadata('name', Teacher);    // true
const isExist1 = Reflect.hasOwnMetadata('name', Teacher);  // false

const res = Reflect.getMetadata('name', Teacher);   // 小明
const res1 = Reflect.getOwnMetadata('name', Teacher);  // undefined

  • hasMetadata、getMetadata、getMetadataKeys 会沿着原型链查找
  • hasOwnMetadata、getOwnMetadata、getOwnMetadataKeys 不会沿着原型链查找,只获取当前

应用在装饰器上

如果在装饰器上使用需要metadata

class Test {
  @Reflect.metadata('age', 15)
  getAge() {}
}

const isExist = Reflect.hasMetadata('age', Test.prototype, 'getAge');
const res = Reflect.getMetadata('age', Test.prototype, 'getAge');

装饰器的执行顺序

function showData(target: typeof User) {
  const data = Reflect.getMetadata('name', target.prototype, 'getName');
  console.log(data);  // '小明'
}

@showData
class User {
  @Reflect.metadata('name', '小明')
  getName() {}
}

上述示例data可以打印出来,表示方法上的装饰器先执行,类的装饰器后执行

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

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

評(píng)論

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

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(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
提交
取消