bind-decorator
TypeScript icon, indicating that this package has built-in type declarations

1.0.11 • Public • Published

bind-decorator

Context method binding decorator.

npm version license Build Status Code Climate Test Coverage Issue Count TypeScript Typings

@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 decorators proposal.

  • It will throw exceptions if decorating anything other than function;
  • Since the implementation follows the latest decorators proposal where compartion betweeen this and target can not be trusted, @bind will always return a configurable, get accessor propertyDescriptor which will memomize the result of descriptor.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

NPM

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

  1. npm install

  2. npm test

Contributing

  1. npm install

  2. Make changes

  3. If necessary add some tests to __tests__

  4. npm test

  5. Make a Pull Request

Dependents (170)

Package Sidebar

Install

npm i bind-decorator

Weekly Downloads

189,076

Version

1.0.11

License

MIT

Last publish

Collaborators

  • nohomey