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
Readonlyaccess
An object that can be used to access the current value of the class element at runtime.
Type declaration
Readonlykind
The kind of class element that was decorated.
Readonlymetadata
Readonlyname
The name of the decorated class element.
Readonlyprivate
A value indicating whether the class element has a private name.
Readonlystatic
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
staticelement), or before instance initializers are run (when decorating a non-staticelement).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.