@reskin/core 0.0.21 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/reskin-core-directives.umd.js +303 -163
- package/bundles/reskin-core-directives.umd.js.map +1 -1
- package/bundles/reskin-core-guards.umd.js +119 -32
- package/bundles/reskin-core-guards.umd.js.map +1 -1
- package/bundles/reskin-core-interceptors.umd.js +310 -92
- package/bundles/reskin-core-interceptors.umd.js.map +1 -1
- package/bundles/reskin-core-utils.umd.js +220 -77
- package/bundles/reskin-core-utils.umd.js.map +1 -1
- package/directives/auth.directive.d.ts +56 -9
- package/directives/load.styles.directive.d.ts +45 -5
- package/directives/string.template.outlet.directive.d.ts +68 -11
- package/esm2015/directives/auth.directive.js +71 -30
- package/esm2015/directives/load.styles.directive.js +84 -15
- package/esm2015/directives/string.template.outlet.directive.js +118 -60
- package/esm2015/guards/auth.guard.js +117 -30
- package/esm2015/interceptors/blob.interceptor.js +67 -28
- package/esm2015/interceptors/cache.interceptor.js +46 -14
- package/esm2015/interceptors/error.interceptor.js +104 -12
- package/esm2015/interceptors/public-api.js +2 -1
- package/esm2015/interceptors/token.interceptor.js +86 -42
- package/esm2015/interceptors/types.js +5 -0
- package/esm2015/utils/array.js +42 -22
- package/esm2015/utils/dom.js +29 -11
- package/esm2015/utils/form.js +44 -13
- package/esm2015/utils/store.js +101 -26
- package/fesm2015/reskin-core-directives.js +269 -103
- package/fesm2015/reskin-core-directives.js.map +1 -1
- package/fesm2015/reskin-core-guards.js +116 -29
- package/fesm2015/reskin-core-guards.js.map +1 -1
- package/fesm2015/reskin-core-interceptors.js +302 -91
- package/fesm2015/reskin-core-interceptors.js.map +1 -1
- package/fesm2015/reskin-core-utils.js +212 -68
- package/fesm2015/reskin-core-utils.js.map +1 -1
- package/guards/auth.guard.d.ts +85 -5
- package/interceptors/blob.interceptor.d.ts +30 -3
- package/interceptors/cache.interceptor.d.ts +28 -4
- package/interceptors/error.interceptor.d.ts +43 -2
- package/interceptors/public-api.d.ts +1 -0
- package/interceptors/token.interceptor.d.ts +41 -12
- package/interceptors/types.d.ts +68 -0
- package/package.json +1 -1
- package/utils/array.d.ts +8 -1
- package/utils/dom.d.ts +32 -5
- package/utils/form.d.ts +37 -2
- package/utils/store.d.ts +56 -15
|
@@ -1,19 +1,60 @@
|
|
|
1
1
|
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { Router } from '@angular/router';
|
|
4
|
+
import { ErrorInterceptorConfig } from './types';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* HTTP 错误拦截器
|
|
8
|
+
* 统一处理 HTTP 请求错误,包括 401 未授权错误的自动跳转
|
|
9
|
+
*/
|
|
5
10
|
export declare class ErrorInterceptor implements HttpInterceptor {
|
|
6
11
|
private router;
|
|
12
|
+
private config;
|
|
7
13
|
constructor(router: Router);
|
|
14
|
+
/**
|
|
15
|
+
* 设置拦截器配置
|
|
16
|
+
* @param config 配置对象
|
|
17
|
+
*/
|
|
18
|
+
setConfig(config: ErrorInterceptorConfig): void;
|
|
19
|
+
/**
|
|
20
|
+
* 拦截 HTTP 请求,处理错误响应
|
|
21
|
+
* @param request HTTP 请求对象
|
|
22
|
+
* @param next 下一个拦截器处理器
|
|
23
|
+
* @returns Observable<HttpEvent<unknown>>
|
|
24
|
+
*/
|
|
8
25
|
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
26
|
+
/**
|
|
27
|
+
* 处理 401 未授权错误
|
|
28
|
+
*/
|
|
29
|
+
private handleUnauthorizedError;
|
|
30
|
+
/**
|
|
31
|
+
* 提取错误信息
|
|
32
|
+
* @param error HTTP 错误响应
|
|
33
|
+
* @returns 错误信息字符串
|
|
34
|
+
*/
|
|
35
|
+
private extractErrorMessage;
|
|
9
36
|
static ɵfac: i0.ɵɵFactoryDeclaration<ErrorInterceptor, never>;
|
|
10
37
|
static ɵprov: i0.ɵɵInjectableDeclaration<ErrorInterceptor>;
|
|
11
38
|
}
|
|
12
39
|
/**
|
|
13
|
-
*
|
|
40
|
+
* 提供 HTTP 错误拦截器
|
|
41
|
+
* @param config 可选的配置对象
|
|
42
|
+
* @returns Provider 配置对象
|
|
43
|
+
* @example
|
|
44
|
+
* providers: [
|
|
45
|
+
* providerHttpError({ unauthorizedPath: '/login', enableLogging: true })
|
|
46
|
+
* ]
|
|
14
47
|
*/
|
|
15
|
-
export declare function providerHttpError(): {
|
|
48
|
+
export declare function providerHttpError(config?: ErrorInterceptorConfig): {
|
|
49
|
+
provide: import("@angular/core").InjectionToken<HttpInterceptor[]>;
|
|
50
|
+
useFactory: (router: Router) => ErrorInterceptor;
|
|
51
|
+
deps: (typeof Router)[];
|
|
52
|
+
multi: boolean;
|
|
53
|
+
useClass?: undefined;
|
|
54
|
+
} | {
|
|
16
55
|
provide: import("@angular/core").InjectionToken<HttpInterceptor[]>;
|
|
17
56
|
useClass: typeof ErrorInterceptor;
|
|
18
57
|
multi: boolean;
|
|
58
|
+
useFactory?: undefined;
|
|
59
|
+
deps?: undefined;
|
|
19
60
|
};
|
|
@@ -2,15 +2,26 @@ import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpHeaders } fro
|
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { RkAuthService } from '@reskin/core/services';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Token 拦截器
|
|
7
|
+
* 自动为 HTTP 请求添加认证 Token
|
|
8
|
+
*/
|
|
5
9
|
export declare class TokenInterceptor implements HttpInterceptor {
|
|
6
|
-
private
|
|
7
|
-
constructor(
|
|
10
|
+
private authService;
|
|
11
|
+
constructor(authService: RkAuthService);
|
|
12
|
+
/**
|
|
13
|
+
* 拦截 HTTP 请求,添加 Token 认证信息
|
|
14
|
+
* @param request HTTP 请求对象
|
|
15
|
+
* @param next 下一个拦截器处理器
|
|
16
|
+
* @returns Observable<HttpEvent<unknown>>
|
|
17
|
+
*/
|
|
8
18
|
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
9
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<TokenInterceptor, never>;
|
|
10
20
|
static ɵprov: i0.ɵɵInjectableDeclaration<TokenInterceptor>;
|
|
11
21
|
}
|
|
12
22
|
/**
|
|
13
|
-
*
|
|
23
|
+
* 提供 Token 拦截器
|
|
24
|
+
* @returns Provider 配置对象
|
|
14
25
|
*/
|
|
15
26
|
export declare function providerAuthToken(): {
|
|
16
27
|
provide: import("@angular/core").InjectionToken<HttpInterceptor[]>;
|
|
@@ -18,20 +29,38 @@ export declare function providerAuthToken(): {
|
|
|
18
29
|
multi: boolean;
|
|
19
30
|
};
|
|
20
31
|
/**
|
|
21
|
-
*
|
|
22
|
-
* @param urls
|
|
23
|
-
* @param params
|
|
24
|
-
* @
|
|
32
|
+
* 创建不带 Token 的请求配置
|
|
33
|
+
* @param urls 模板字符串数组
|
|
34
|
+
* @param params 模板参数
|
|
35
|
+
* @returns [url, options] 元组
|
|
36
|
+
* @example
|
|
37
|
+
* this.http.get(...NoAuthTokenTemplate`/api/public/data`).subscribe();
|
|
25
38
|
*/
|
|
26
39
|
export declare function NoAuthTokenTemplate(urls: TemplateStringsArray, ...params: any[]): [string, {
|
|
27
40
|
headers: HttpHeaders;
|
|
28
41
|
}];
|
|
29
42
|
/**
|
|
30
|
-
*
|
|
31
|
-
* @param
|
|
32
|
-
* @param
|
|
33
|
-
* @
|
|
43
|
+
* 创建使用自定义 Token 的请求配置
|
|
44
|
+
* @param token 自定义 Token 值
|
|
45
|
+
* @param urls 模板字符串数组
|
|
46
|
+
* @param params 模板参数
|
|
47
|
+
* @returns [url, options] 元组
|
|
48
|
+
* @example
|
|
49
|
+
* this.http.get(...CustomTokenTemplate('my-token', `/api/data`)).subscribe();
|
|
50
|
+
*/
|
|
51
|
+
export declare function CustomTokenTemplate(token: string, urls: TemplateStringsArray, ...params: any[]): [string, {
|
|
52
|
+
headers: HttpHeaders;
|
|
53
|
+
}];
|
|
54
|
+
/**
|
|
55
|
+
* 创建使用自定义 Token 和自定义 Header 名称的请求配置
|
|
56
|
+
* @param token 自定义 Token 值
|
|
57
|
+
* @param headerName 自定义 Header 名称
|
|
58
|
+
* @param urls 模板字符串数组
|
|
59
|
+
* @param params 模板参数
|
|
60
|
+
* @returns [url, options] 元组
|
|
61
|
+
* @example
|
|
62
|
+
* this.http.get(...CustomTokenWithHeaderTemplate('my-token', 'X-API-Key', `/api/data`)).subscribe();
|
|
34
63
|
*/
|
|
35
|
-
export declare function
|
|
64
|
+
export declare function CustomTokenWithHeaderTemplate(token: string, headerName: string, urls: TemplateStringsArray, ...params: any[]): [string, {
|
|
36
65
|
headers: HttpHeaders;
|
|
37
66
|
}];
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP 拦截器相关类型定义
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Token 拦截器配置
|
|
6
|
+
*/
|
|
7
|
+
export interface TokenInterceptorConfig {
|
|
8
|
+
/**
|
|
9
|
+
* 默认的 Token Header 名称
|
|
10
|
+
* @default 'Authorization'
|
|
11
|
+
*/
|
|
12
|
+
tokenHeaderName?: string;
|
|
13
|
+
/**
|
|
14
|
+
* 认证 ID Header 名称
|
|
15
|
+
* @default 'X-Auth-Id'
|
|
16
|
+
*/
|
|
17
|
+
authIdHeaderName?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 错误拦截器配置
|
|
21
|
+
*/
|
|
22
|
+
export interface ErrorInterceptorConfig {
|
|
23
|
+
/**
|
|
24
|
+
* 401 错误跳转路径
|
|
25
|
+
* @default '/errors/401'
|
|
26
|
+
*/
|
|
27
|
+
unauthorizedPath?: string;
|
|
28
|
+
/**
|
|
29
|
+
* 是否启用错误日志
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
enableLogging?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 自定义错误处理函数
|
|
35
|
+
*/
|
|
36
|
+
customErrorHandler?: (error: any) => void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 缓存拦截器配置
|
|
40
|
+
*/
|
|
41
|
+
export interface CacheInterceptorConfig {
|
|
42
|
+
/**
|
|
43
|
+
* 缓存最大数量
|
|
44
|
+
* @default 100
|
|
45
|
+
*/
|
|
46
|
+
maxCacheSize?: number;
|
|
47
|
+
/**
|
|
48
|
+
* 缓存过期时间(毫秒)
|
|
49
|
+
* @default undefined (永不过期)
|
|
50
|
+
*/
|
|
51
|
+
cacheExpiration?: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* HTTP 请求选项扩展
|
|
55
|
+
*/
|
|
56
|
+
export interface HttpRequestOptions {
|
|
57
|
+
headers?: {
|
|
58
|
+
[name: string]: string | string[];
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Token 控制类型
|
|
63
|
+
*/
|
|
64
|
+
export declare type TokenControl = 'no-token' | 'custom-token';
|
|
65
|
+
/**
|
|
66
|
+
* 缓存策略类型
|
|
67
|
+
*/
|
|
68
|
+
export declare type CacheStrategy = 'Storage' | 'Memory';
|
package/package.json
CHANGED
package/utils/array.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 深克隆一个对象或数组
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* 该函数通过递归方式深克隆输入的对象或数组,确保与原对象或数组隔离,不会相互影响。
|
|
5
|
+
* 支持克隆:普通对象、数组、Date、Map、Set、RegExp 等类型。
|
|
5
6
|
*
|
|
6
7
|
* @param source 需要克隆的源对象或数组
|
|
7
8
|
* @returns 返回克隆后的对象或数组
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const obj = { a: 1, b: { c: 2 } };
|
|
12
|
+
* const cloned = deepClone(obj);
|
|
13
|
+
* cloned.b.c = 3;
|
|
14
|
+
* console.log(obj.b.c); // 输出: 2
|
|
8
15
|
*/
|
|
9
16
|
export declare function deepClone<T>(source: T): T;
|
package/utils/dom.d.ts
CHANGED
|
@@ -1,11 +1,38 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* 监听元素大小变化的配置选项
|
|
4
|
+
*/
|
|
5
|
+
export interface ObserveResizeOptions {
|
|
6
|
+
/**
|
|
7
|
+
* 防抖延迟时间(毫秒)
|
|
8
|
+
* 设置后会对频繁的大小变化事件进行防抖处理
|
|
9
|
+
* @default undefined (不防抖)
|
|
10
|
+
*/
|
|
11
|
+
debounce?: number;
|
|
12
|
+
}
|
|
2
13
|
/**
|
|
3
14
|
* 监听元素的大小变化
|
|
4
15
|
*
|
|
5
|
-
* 此函数创建了一个Observable,用于观察给定HTMLElement
|
|
6
|
-
*
|
|
16
|
+
* 此函数创建了一个 Observable,用于观察给定 HTMLElement 元素的大小变化。
|
|
17
|
+
* 它使用了 ResizeObserver API 来实现,当元素的大小发生变化时,会发出一个包含变化记录的数组。
|
|
18
|
+
*
|
|
19
|
+
* @param element 需要观察大小变化的 HTMLElement 元素
|
|
20
|
+
* @param options 配置选项
|
|
21
|
+
* @returns 返回一个 Observable,其中包含 ResizeObserverEntry 的数组,用于记录每次大小变化的信息
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // 基础用法
|
|
25
|
+
* const element = document.querySelector('.container');
|
|
26
|
+
* observeResize(element).subscribe(entries => {
|
|
27
|
+
* const { width, height } = entries[0].contentRect;
|
|
28
|
+
* console.log(`元素尺寸: ${width}x${height}`);
|
|
29
|
+
* });
|
|
7
30
|
*
|
|
8
|
-
* @
|
|
9
|
-
*
|
|
31
|
+
* @example
|
|
32
|
+
* // 使用防抖优化性能
|
|
33
|
+
* observeResize(element, { debounce: 300 }).subscribe(entries => {
|
|
34
|
+
* // 300ms 内的多次变化只会触发一次
|
|
35
|
+
* console.log('元素大小已稳定');
|
|
36
|
+
* });
|
|
10
37
|
*/
|
|
11
|
-
export declare function observeResize(element: HTMLElement): Observable<ResizeObserverEntry[]>;
|
|
38
|
+
export declare function observeResize(element: HTMLElement, options?: ObserveResizeOptions): Observable<ResizeObserverEntry[]>;
|
package/utils/form.d.ts
CHANGED
|
@@ -1,6 +1,41 @@
|
|
|
1
1
|
import { FormGroup } from '@angular/forms';
|
|
2
|
+
/**
|
|
3
|
+
* 表单验证配置
|
|
4
|
+
*/
|
|
5
|
+
export interface FormVerifyOptions {
|
|
6
|
+
/**
|
|
7
|
+
* 是否在控制台输出错误信息
|
|
8
|
+
* @default true
|
|
9
|
+
*/
|
|
10
|
+
logError?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* 自定义错误处理函数
|
|
13
|
+
*/
|
|
14
|
+
onError?: (invalidFields: string[]) => void;
|
|
15
|
+
}
|
|
2
16
|
/**
|
|
3
17
|
* 表单验证
|
|
4
|
-
*
|
|
18
|
+
*
|
|
19
|
+
* 遍历表单所有控件,标记为脏状态并触发验证。
|
|
20
|
+
* 如果表单验证通过,返回表单的原始值;否则返回 false。
|
|
21
|
+
*
|
|
22
|
+
* @param form Angular 表单组对象
|
|
23
|
+
* @param options 验证配置选项
|
|
24
|
+
* @returns 验证通过返回表单值,验证失败返回 false
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* const result = formVerify(this.form);
|
|
28
|
+
* if (result) {
|
|
29
|
+
* console.log('表单数据:', result);
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* // 自定义错误处理
|
|
34
|
+
* formVerify(this.form, {
|
|
35
|
+
* logError: false,
|
|
36
|
+
* onError: (fields) => {
|
|
37
|
+
* this.message.error(`以下字段验证失败: ${fields.join(', ')}`);
|
|
38
|
+
* }
|
|
39
|
+
* });
|
|
5
40
|
*/
|
|
6
|
-
export declare function formVerify<T = Record<string, any>>(form: FormGroup): false | T;
|
|
41
|
+
export declare function formVerify<T = Record<string, any>>(form: FormGroup, options?: FormVerifyOptions): false | T;
|
package/utils/store.d.ts
CHANGED
|
@@ -4,10 +4,12 @@
|
|
|
4
4
|
export interface StoreOptions {
|
|
5
5
|
/**
|
|
6
6
|
* 缓存存储方式
|
|
7
|
+
* @default sessionStorage
|
|
7
8
|
*/
|
|
8
9
|
storageEngine?: Storage;
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
+
* 过期时间(毫秒)
|
|
12
|
+
* @default undefined (永不过期)
|
|
11
13
|
*/
|
|
12
14
|
expires?: number;
|
|
13
15
|
}
|
|
@@ -15,40 +17,79 @@ export interface StoreOptions {
|
|
|
15
17
|
* 设置存储前缀
|
|
16
18
|
*
|
|
17
19
|
* 该函数用于更改全局存储前缀,影响后续所有存储操作的键名前缀。
|
|
18
|
-
*
|
|
20
|
+
* 注意:更改前缀后,之前使用旧前缀存储的数据将无法访问。
|
|
19
21
|
*
|
|
20
22
|
* @param newPrefix 新的存储前缀字符串
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* setStorePrefix('MY_APP_');
|
|
21
26
|
*/
|
|
22
27
|
export declare function setStorePrefix(newPrefix: string): void;
|
|
23
28
|
/**
|
|
24
|
-
* 提供了一个用于缓存值的类,值可以被存储在浏览器的localStorage或sessionStorage中。
|
|
25
|
-
*
|
|
29
|
+
* 提供了一个用于缓存值的类,值可以被存储在浏览器的 localStorage 或 sessionStorage 中。
|
|
30
|
+
* 支持过期时间设置,过期后数据会自动移除。
|
|
31
|
+
*
|
|
32
|
+
* @template T 存储数据的类型
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* // 基础用法
|
|
36
|
+
* const userStore = new Store<User>('user', { name: '', age: 0 });
|
|
37
|
+
* userStore.set({ name: '张三', age: 25 });
|
|
38
|
+
* console.log(userStore.get()); // { name: '张三', age: 25 }
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* // 使用 localStorage 并设置过期时间
|
|
42
|
+
* const tokenStore = new Store<string>('token', '', {
|
|
43
|
+
* storageEngine: localStorage,
|
|
44
|
+
* expires: 3600000 // 1小时后过期
|
|
45
|
+
* });
|
|
26
46
|
*/
|
|
27
47
|
export declare class Store<T> {
|
|
28
48
|
private value;
|
|
29
49
|
private readonly storage;
|
|
30
50
|
private readonly expires?;
|
|
31
|
-
private readonly
|
|
51
|
+
private readonly key;
|
|
32
52
|
/**
|
|
33
|
-
* 初始化Store
|
|
34
|
-
* @param key
|
|
35
|
-
* @param defaultValue
|
|
36
|
-
* @param options
|
|
53
|
+
* 初始化 Store 类的实例
|
|
54
|
+
* @param key 缓存值的键名
|
|
55
|
+
* @param defaultValue 初始值,默认值会被存储并返回直到设置新的值
|
|
56
|
+
* @param options 配置选项,包括存储引擎和过期时间
|
|
37
57
|
*/
|
|
38
58
|
constructor(key: string, defaultValue: T, options?: StoreOptions);
|
|
39
59
|
/**
|
|
40
|
-
*
|
|
41
|
-
|
|
60
|
+
* 生成存储键名
|
|
61
|
+
*/
|
|
62
|
+
private getStorageKey;
|
|
63
|
+
/**
|
|
64
|
+
* 从存储中加载数据
|
|
65
|
+
*/
|
|
66
|
+
private loadFromStorage;
|
|
67
|
+
/**
|
|
68
|
+
* 获取当前缓存的值
|
|
69
|
+
* @returns 缓存的值
|
|
42
70
|
*/
|
|
43
71
|
get(): T;
|
|
44
72
|
/**
|
|
45
|
-
*
|
|
46
|
-
* @param newValue
|
|
73
|
+
* 设置新的缓存值
|
|
74
|
+
* @param newValue 新的值
|
|
47
75
|
*/
|
|
48
76
|
set(newValue: T): void;
|
|
49
77
|
/**
|
|
50
|
-
*
|
|
51
|
-
* @param updateFn
|
|
78
|
+
* 使用提供的函数更新缓存的值
|
|
79
|
+
* @param updateFn 一个接受当前值并返回新值的函数
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* const countStore = new Store<number>('count', 0);
|
|
83
|
+
* countStore.update(count => count + 1);
|
|
52
84
|
*/
|
|
53
85
|
update(updateFn: (currentValue: T) => T): void;
|
|
86
|
+
/**
|
|
87
|
+
* 清除缓存数据
|
|
88
|
+
*/
|
|
89
|
+
clear(): void;
|
|
90
|
+
/**
|
|
91
|
+
* 检查缓存是否存在且未过期
|
|
92
|
+
* @returns 如果缓存存在且未过期返回 true,否则返回 false
|
|
93
|
+
*/
|
|
94
|
+
has(): boolean;
|
|
54
95
|
}
|