bind-decorator
v1.0.11
Published
The fastest automatic method.bind(this) decorator
Downloads
434,246
Maintainers
Readme
bind-decorator
Context method binding decorator.
@bind
is just a little faster version of @autobind
for decorating methods only, by binding them to the current context. It is written in TypeScript and follows the latest decorator
s proposal.
- It will
throw
exceptions if decorating anything other thanfunction
; - Since the implementation follows the latest
decorator
s proposal where compartion betweeenthis
andtarget
can not be trusted,@bind
will alwaysreturn
aconfigurable
,get accessor propertyDescriptor
which will memomize the result ofdescriptor.value.bind(this)
by re-defining the property descriptor of the method beeing decorated (Credits goes to autobind-decorator for memoizing the result).
If you are looking for not just method decorator but rather full class bounding decorator check @autobind
.
Install
Install with npm:
$ npm install bind-decorator
Usage
In JavaScript
import bind from 'bind-decorator';
class Test {
static what = 'static';
@bind
static test() {
console.log(this.what);
}
constructor(what) {
this.what = what;
}
@bind
test() {
console.warn(this.what);
}
}
const tester = new Test('bind');
const { test } = tester;
tester.test(); // warns 'bind'.
test(); // warns 'bind'.
Test.test(); // logs 'static'.
In TypeScript
import bind from 'bind-decorator';
class Test {
public static what: string = 'static';
@bind
public static test(): void {
console.log(this.what);
}
public constructor(public what: string) {
this.what = what;
}
@bind
public test(): void {
console.warn(this.what);
}
}
const tester: Test = new Test('bind');
const { test } = tester;
tester.test(); // warns 'bind'.
test(); // warns 'bind'.
Test.test(); // logs 'static'.
Testing
npm install
npm test
Contributing
npm install
Make changes
If necessary add some tests to
__tests__
npm test
Make a Pull Request