TypeScript里的裝飾器

如果想讓Angular2支持實(shí)驗(yàn)性的裝飾器特性恭应,需要在tsconfig.json文件里啟用experimentalDecorators編譯器選項(xiàng)。

{
 "compilerOptions": {
     "target": "ES5",
     "experimentalDecorators": true
   }
}

裝飾器

語法: @expression掠兄,expression求值后必須為一個(gè)函數(shù),它會(huì)在運(yùn)行時(shí)被調(diào)用掺出,被裝飾的聲明信息做為參數(shù)傳入徽千。

定義@test裝飾器:

function test(target) {
       // do something with "target" ...
      // target就是所要修飾的目標(biāo)類
}

類裝飾器

類裝飾器在類聲明之前被聲明苫费,類裝飾器應(yīng)用于類構(gòu)造函數(shù)汤锨,可以用來監(jiān)視,修改或替換類定義百框。

類裝飾器表達(dá)式會(huì)在運(yùn)行時(shí)當(dāng)作函數(shù)被調(diào)用闲礼,類的構(gòu)造函數(shù)作為其唯一的參數(shù)。

如果類裝飾器返回一個(gè)值,它會(huì)使用提供的構(gòu)造函數(shù)來替換類的聲明柬泽。

首先定義一個(gè)裝飾器:

function name(target) {
      target.name = '小m'
}

在類中使用:

@name
class MyNameClass{}
console.log(MyNameClass.name)    //小m

裝飾器工廠

裝飾器工廠就是一個(gè)簡(jiǎn)單的函數(shù)慎菲,它返回一個(gè)表達(dá)式,以供裝飾器在運(yùn)行時(shí)調(diào)用锨并。

使用方法:

function isName(name) {
    return function(target) {
        target.name = name
    }
}

@isName('小m')
class MyNameClass{}
MyNameClass.name        // 小m
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末露该,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子第煮,更是在濱河造成了極大的恐慌解幼,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件包警,死亡現(xiàn)場(chǎng)離奇詭異撵摆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)害晦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門特铝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壹瘟,你說我怎么就攤上這事鲫剿。” “怎么了俐筋?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵牵素,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我澄者,道長(zhǎng)笆呆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任粱挡,我火速辦了婚禮赠幕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘询筏。我一直安慰自己榕堰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布嫌套。 她就那樣靜靜地躺著逆屡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪踱讨。 梳的紋絲不亂的頭發(fā)上魏蔗,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音痹筛,去河邊找鬼莺治。 笑死廓鞠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谣旁。 我是一名探鬼主播床佳,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼榄审!你這毒婦竟也來了砌们?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤搁进,失蹤者是張志新(化名)和其女友劉穎怨绣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拷获,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡篮撑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匆瓜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赢笨。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖驮吱,靈堂內(nèi)的尸體忽然破棺而出茧妒,到底是詐尸還是另有隱情,我是刑警寧澤左冬,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布桐筏,位于F島的核電站,受9級(jí)特大地震影響拇砰,放射性物質(zhì)發(fā)生泄漏梅忌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一除破、第九天 我趴在偏房一處隱蔽的房頂上張望牧氮。 院中可真熱鬧,春花似錦瑰枫、人聲如沸踱葛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尸诽。三九已至,卻和暖如春盯另,著一層夾襖步出監(jiān)牢的瞬間性含,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工土铺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胶滋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓悲敷,卻偏偏與公主長(zhǎng)得像究恤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子后德,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理部宿,服務(wù)發(fā)現(xiàn),斷路器瓢湃,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • 前言 人生苦多理张,快來 Kotlin ,快速學(xué)習(xí)Kotlin绵患! 什么是Kotlin雾叭? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,163評(píng)論 9 118
  • 概述 TypeScript本質(zhì)上是向JavaScript語言添加了可選的靜態(tài)類型和基于類的面向?qū)ο缶幊蹋瑫r(shí)也支持...
    oWSQo閱讀 8,504評(píng)論 1 45
  • { "Unterminated string literal.": "未終止的字符串文本落蝙。", "Identifi...
    一粒沙隨風(fēng)飄搖閱讀 10,499評(píng)論 0 3
  • 《小王子》里沒有生僻的字织狐,沒有晦澀的情節(jié),簡(jiǎn)簡(jiǎn)單單筏勒、真真切切的童真就足夠感人肺腑移迫。《小王子》一共27章管行,宗宗從今天...
    Zack要多喝熱水閱讀 6,212評(píng)論 0 8