Hur får man typdata i en TypeScript-decorator?
Jag skulle vilja kunna få åtkomst till typinformationen på en variabeldeklaration som jag vill dekorera:
@decorator
foo: Foo;
Från dekoratören, kan jag på något sätt få åtkomst till Foo?
Svar #1
Du borde kunna göra det, men du kommer att behöva använda reflect-metadata.
Det finns ett exempel här: Decorators & metadata reflection in TypeScript: From Novice to Expert som verkar vara precis det du letar efter:
function logType(target : any, key : string) {
var t = Reflect.getMetadata("design:type", target, key);
console.log(`${key} type: ${t.name}`);
}
class Demo{
@logType
public attr1: string;
}
Bör skriva ut:
attr1 typ: Sträng
