Typescript PropertyDecorator不像宣传的那样工作

时间:2016-12-01 12:44:35

标签: typescript

当我尝试在typescript中编写一个简单的Property Decorator时,PropertyDescriptor始终为null。如果我使用以下代码并使用以下代码编译它:

node_modules/.bin/tsc -experimentalDecorators --target es5 test.ts
然后是" somestate"的PropertyDescriptor。永远是空的。

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 个答案:

答案 0 :(得分:1)

AFAIU,这是预期的行为。

根据TypeScript documentation Property Decorators 部分:

  

注意不提供属性描述符作为参数   由于如何初始化属性装饰器,属性装饰器   打字稿。这是因为目前没有机制   在定义原型的成员时描述实例属性,   并且无法观察或修改属性的初始化程序。如   这样,属性装饰器只能用于观察属性   已为一个类声明了特定名称。