2016-08-26 16 views
0

クラスオブジェクト内のデコレータ関数は、そのオブジェクト内のプロパティにどのようにアクセスできますか。以下の想像上の例では、this.nameは期待される名前 "JohnDoe"を返さず、その名前は常に空です。Typescript:デコレータ宣言内のクラスの他の関数/プロパティにアクセス

class First { 
    name:string 
    constructor(name:string) { 
     this.name = name 
    } 

    nameProperty(target: any, key: string) { 
     ... 
     console.log(this.name); //<--- this is always empty. was expecting "JohnDoe" 
     ... 
    } 
} 

let f = First("JohnDoe") 
class Second { 
    @f.nameProperty 
    dummyName:string 

} 

答えて

1

thisが紛失しています。このような矢印の機能でそれをキャプチャしよう:

class First { 
    name:string 
    constructor(name:string) { 
     this.name = name 
    } 

    nameProperty() 
    { 
     return (target: any, key: string) => 
     { 
      console.log(this.name); 
     } 
    } 
} 

let f = new First("JohnDoe"); 
class Second { 
    @f.nameProperty() 
    dummyName:string 

} 
+0

メイト、あなたは伝説です!ありがとう – Rjk

関連する問題