1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| export class Cacheable {
| private cache = new Map<string, any>();
|
| createKey(...args: any[]) {
| if (args.length === 1) {
| return args[0].toString();
| }
|
| return args.join(":");
| }
|
| clearCache() {
| this.cache.clear();
| }
|
| cached(key: number | string | Array<string | number>, fn: () => any) {
| const cacheKey = this.createKey(key);
|
| if (this.cache.has(cacheKey)) {
| return this.cache.get(cacheKey);
| }
|
| const result = fn();
|
| this.cache.set(cacheKey, result);
|
| return result;
| }
| }
|
|