Nebulous Puffy Marshmallows

    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

    Install

    npm i bind-decorator

    DownloadsWeekly Downloads

    143,771

    Version

    1.0.11

    License

    MIT

    Last publish

    Collaborators

    • nohomey