typescript-lazy-get-decorator

Lazily evaluates a getter on an object and caches the returned value

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
typescript-lazy-get-decorator
3221.2.25 years ago6 years agoMinified + gzip package size for typescript-lazy-get-decorator in KB

Readme

Typescript Lazy Getter
Build Status Coverage Status Dependency status Dev dependency status Greenkeeper badge
NPM
API
/**
 * Evaluate the getter function and cache the result
 * @param {boolean} [setProto=false] Set the value on the class prototype as well. Only applies to non-static getters.
 * @param {boolean} [makeNonConfigurable=false] Set to true to make the resolved property non-configurable
 * @return {(target: any, key: string, descriptor: PropertyDescriptor) => void} A Typescript decorator function
 */
function LazyGetter(setProto: boolean = false, makeNonConfigurable = false) {}
Usage
import {LazyGetter} from 'typescript-lazy-get-decorator';

class AClass {

    @LazyGetter()
    get lazyNoProto():string {
        console.log('Evaluating lazyNoProto');
        return 'lazyNoProtoValue';
    }

    @LazyGetter(true)
    get lazyWithProto():string {
        console.log('Evaluating lazyWithProto');
        return 'lazyWithProtoValue';
    }
}

const inst1 = new AClass();

console.log('==== inst 1 ====\n');

console.log(inst1.lazyNoProto);
console.log(inst1.lazyNoProto);
console.log(inst1.lazyWithProto);
console.log(inst1.lazyWithProto);

const inst2 = new AClass();

console.log('\n\n==== inst 2 ====\n');

console.log(inst2.lazyNoProto);
console.log(inst2.lazyNoProto);
console.log(inst2.lazyWithProto);
console.log(inst2.lazyWithProto);

Outputs:
==== inst 1 ====

Evaluating lazyNoProto
lazyNoProtoValue
lazyNoProtoValue
Evaluating lazyWithProto
lazyWithProtoValue
lazyWithProtoValue


==== inst 2 ====

Evaluating lazyNoProto
lazyNoProtoValue
lazyNoProtoValue
lazyWithProtoValue
lazyWithProtoValue