typescript / expert
Snippet
Kontextuelle Metadaten mit Stage 3 Decorators
Stage 3 Decorators bieten eine typsichere Möglichkeit, Klassenmitglieder zu umschließen. Im Gegensatz zu alten experimentellen Decorators nutzen diese ein strukturiertes 'context'-Objekt, das Namen, Private/Static-Status und andere Metadaten enthält, ohne 'reflect-metadata' zu benötigen.
snippet.ts
1
2
3
4
5
6
7
8
9
10
function loggedMethod<This, Args extends any[], Return>(target: (this: This, ...args: Args) => Return,context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>) {const methodName = String(context.name);return function (this: This, ...args: Args): Return {console.log(`Calling ${methodName}`);return target.call(this, ...args);};}
Erklärung
1
ClassMethodDecoratorContext<This, ...>
Das standardisierte Kontext-Objekt, das von der Runtime während der Dekoration bereitgestellt wird.
2
context.name
Greift direkt über den Kontext auf den Namen der dekorierten Methode zu.
3
return function (this: This, ...args: Args)
Gibt eine Ersatzfunktion zurück, die den ursprünglichen 'this'-Kontext und die Argumente beibehält.