我一直在摆弄与打字稿装饰,我有一个简单的问题,假设我有一个定制的装饰叫做RetainType
像这样一类:是否可以将TypeScript装饰器应用于类中的所有字段?
class Person {
@RetainType name: string;
@RetainType age: number;
@RetainType dateOfBirth: Date;
}
我想能写:
@RetainType class Person {
name: string;
age: number;
dateOfBirth: Date;
}
换句话说,是否有任何方法可以将装饰器应用于类中的所有属性?我使用@RetainType
发送有关各个属性的元数据(设计:专门类型)。有一个更简洁的方法,比逐个注释所有字段更好。
'RetainType'做什么?你可以添加代码吗? –
从字面上看,它是一个空的装饰器,我只是用它来强制TypeScript编译器生成设计:键入元数据(请参阅https://www.typescriptlang.org/docs/handbook/decorators.html)。 –
不,你不能用类装饰器做到这一点,因为当装饰器函数被调用时,属性将不会从类构造器中获得。您可以为每个属性添加@ @ Reflect.metadata(“design:type”,PROPERTY_TYPE)',然后用类装饰器以某种方式使用这些属性,但我不明白这比使用'RetainType'装饰器好多了。 –