123456789101112131415161718192021222324252627282930313233 |
- /**
- Define a [lazily evaluated](https://en.wikipedia.org/wiki/Lazy_evaluation) property on an object.
- @param object - Object to add property to.
- @param propertyName - Name of the property to add.
- @param fn - Called the first time `propertyName` is accessed.
- @example
- ```
- import defineLazyProp = require('define-lazy-prop');
- const unicorn = {
- // …
- };
- defineLazyProp(unicorn, 'rainbow', () => expensiveComputation());
- app.on('user-action', () => {
- doSomething(unicorn.rainbow);
- });
- ```
- */
- declare function defineLazyProp<
- ObjectType extends {[key: string]: unknown},
- PropertyNameType extends string,
- PropertyValueType
- >(
- object: ObjectType,
- propertyName: PropertyNameType,
- fn: () => PropertyValueType
- ): ObjectType & {[K in PropertyNameType]: PropertyValueType};
- export = defineLazyProp;
|