27 lines
640 B
TypeScript
27 lines
640 B
TypeScript
|
/**
|
||
|
Import a module lazily.
|
||
|
|
||
|
@example
|
||
|
```
|
||
|
// Pass in `require` or a custom import function
|
||
|
import importLazy = require('import-lazy');
|
||
|
const _ = importLazy(require)('lodash');
|
||
|
|
||
|
// Instead of referring to its exported properties directly…
|
||
|
_.isNumber(2);
|
||
|
|
||
|
// …it's cached on consecutive calls
|
||
|
_.isNumber('unicorn');
|
||
|
|
||
|
// Works out of the box for functions and regular properties
|
||
|
const stuff = importLazy(require)('./math-lib');
|
||
|
console.log(stuff.sum(1, 2)); // => 3
|
||
|
console.log(stuff.PHI); // => 1.618033
|
||
|
```
|
||
|
*/
|
||
|
declare function importLazy<T = unknown>(
|
||
|
importFn: (moduleId: string) => T
|
||
|
): (moduleId: string) => T;
|
||
|
|
||
|
export = importLazy;
|