2016-12-01 14 views
0

単純なProperty Decoratorをtypescriptでコーディングしようとすると、PropertyDescriptorは常にnullです。次のコードを使用してコンパイルした場合:Typescript PropertyDecoratorが広告として機能しない

node_modules/.bin/tsc -experimentalDecorators --target es5 test.ts 

"somestate"のPropertyDescriptorは常にnullです。

function test():any { 
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor):void { 
    console.log("Descriptor %o", descriptor); 
    }; 
} 

export class TestClass { 

    @test() 
    public somestate: string; 
} 

new TestClass(); 

この動作は、ターゲットとして選択した内容に関係なく変更されません。

実際に生成されたデコレーションコールは実際には、常にボットセットになります。

__decorate([ 
    test() 
], TestClass.prototype, "somestate", void 0); 

答えて

1

AFAIU、これは予想される動作です。

TypeScript documentationによると、プロパティデコレーターセクション:不動産の記述が原因プロパティのデコレータが 活字体で初期化されているかに 財産デコレータの引数として提供されていない

NOTE。これは、現在、 プロトタイプのメンバを定義するときにインスタンスプロパティを記述するためのメカニズムがないため、プロパティの初期化子を観察または変更する方法がないためです。 のように、プロパティデコレータは、特定の名前のプロパティ がクラスに対して宣言されていることを観察するためにのみ使用できます。

関連する問題