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

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

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

我想能够写:

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

换句话说,有没有办法将装饰器应用于类中的所有属性?我使用@RetainType来发出有关各个属性的元数据(design:type specific).有一个更简洁的方法,比一个一个地注释所有字段更好.

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

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

在类装饰功能中,您可以执行任何操作 – 甚至枚举所有类属性,并按预期方式进行装饰.因此,如果编写额外的代码,你可以做你想做的事.但是,如果不更改它们,则不能将属性装饰器用作类装饰器.它只是行不通.

点赞