是否可以将TypeScript装饰器应用于类中的所有字段?

时间:2016-08-17 17:41:28

标签: typescript

我一直在使用Typescript中的装饰器,我有一个简单的问题,假设我有一个名为RetainType的自定义装饰器和一个类似这样的类:

class Person {
    @RetainType name: string;
    @RetainType age: number;
    @RetainType dateOfBirth: Date;
}

我希望能够写下来:

@RetainType class Person {
    name: string;
    age: number;
    dateOfBirth: Date;
}

换句话说,有没有办法将装饰器应用于类中的所有属性?我使用@RetainType发出有关各个属性的元数据(设计:具体类型)。有一个更简洁的方法,比逐个注释所有字段更好。

1 个答案:

答案 0 :(得分:1)

属性装饰器应用于一个属性。它什么都不返回,只是用相关属性做一些事情。

类装饰器应用于类构造函数。所以它应该返回用普通构造函数替换某些功能的函数。

在课程装饰功能中,您可以做任何事情 - 甚至枚举所有类属性,并以预期的方式进行装饰。因此,如果编写额外的代码,你可以做你想做的事。但是,您无法在不更改它们的情况下将属性装饰器用作类装饰器。它不会工作。