Я хотел бы создать украшение для свойств, которое позволит мне автоматически добавлять свойство без необходимости записывать его в конструктор. Я довольно новичок в сценариях Java/Type, поэтому, надеюсь, я не слишком сильно испортил это. Кажется, я не могу этого сделать, вот что у меня есть до сих пор...
Цель состоит в том, чтобы что-то вроде:
class A {
@uuid
'property': string;
'another': string;
}
function uuid(target: any, key: string): void {
Reflect.defineMetadata('isUuid', true, target, key);
}
Позже я смогу использовать конструктор A
new () => Object
для получения списка всех свойств и того, являются ли они UUID. Я предполагаю, что это будет выглядеть примерно так:
Object.keys(A).forEach(key => {
console.log(`[${key}].isUuid? ${Reflect.getMetadata('isUuid', A, key) === true}`);
});
Что, надеюсь, даст что-то вроде:
[property].isUuid? true
[another].isUuid? false
В качестве примечания: если я изменю класс A
на:
class A {
constructor() {
this.property = undefined;
this.another = undefined;
}
@uuid
'property': string;
'another': string;
}
Я могу заставить это работать, но мне нужно создать экземпляр A
, чтобы получить ключи и метаданные для них.