Interface ClassMethodDecoratorContext<This, Value>
This = unknown,
Value extends
(this: This, ...args: any) => any = (this: This, ...args: any) => any,
> {
access: { get(object: This): Value; has(object: This): boolean };
kind: "method";
metadata: DecoratorMetadataObject;
name: string | symbol;
private: boolean;
static: boolean;
addInitializer(initializer: (this: This) => void): void;
}
Type Parameters
- This = unknown
The type on which the class element will be defined. For a static class element, this will be the type of the constructor. For a non-static class element, this will be the type of the instance.
- Value extends (this: This, ...args: any) => any = (this: This, ...args: any) => any
The type of the decorated class method.
Properties
Readonly
access
An object that can be used to access the current value of the class element at runtime.
Type declaration
Readonly
kind
The kind of class element that was decorated.
Readonly
metadata
Readonly
name
The name of the decorated class element.
Readonly
private
A value indicating whether the class element has a private name.
Readonly
static
A value indicating whether the class element is a static (true
) or instance (false
) element.
Methods
addInitializer
- addInitializer(initializer: (this: This) => void): void
Adds a callback to be invoked either after static methods are defined but before static initializers are run (when decorating a
static
element), or before instance initializers are run (when decorating a non-static
element).Parameters
- initializer: (this: This) => void
Returns void
Example
const bound: ClassMethodDecoratorFunction = (value, context) {
if (context.private) throw new TypeError("Not supported on private methods.");
context.addInitializer(function () {
this[context.name] = this[context.name].bind(this);
});
}
class C {
message = "Hello";
@bound
m() {
console.log(this.message);
}
}
Context provided to a class method decorator.