在TypeScript中使用类型元数据装饰所有属性

时间:2016-10-26 09:26:28

标签: typescript reflection types metadata

鉴于此代码:

class Foo {
    text: String;
}

TypeScript将生成此JavaScript:

var Foo = (function () {
    function Foo() {
    }
    return Foo;
}());

但是,如果我用任何装饰器装饰text,例如像这样的function bar(t, k) {}

class Foo {
    @bar text: String;
}

TypeScript将产生:

var Foo = (function () {
    function Foo() {
    }
    __decorate([
        bar, 
        __metadata('design:type', String)
    ], Foo.prototype, "text", void 0);
    return Foo;
}());

也就是说,它使用text函数使用bar元数据来装饰design:type。这很棒,但是我想指示TypeScript使用design:type元数据来装饰所有属性,而不需要像@bar这样的虚假装饰器。

是否可以使用最新的TypeScript?如果没有(请参阅注释)有关如何使用编译器API实现此目的的任何建议?

0 个答案:

没有答案