Typescript Lazy Getter


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