Skip to content

Commit 94071b3

Browse files
committed
🎵 func_remember 导出返回类型
1 parent 0d82cb4 commit 94071b3

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

util/deno.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gaubee/util",
3-
"version": "0.19.0",
3+
"version": "0.19.1",
44
"exports": {
55
"./abort": "./src/abort.ts",
66
"./bigint": "./src/bigint.ts",

util/src/func.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,25 +29,27 @@ export type Func<This = any, Arguments extends readonly unknown[] = any[], Retur
2929
...args: Arguments
3030
) => Return;
3131
type FunReturn<F> = F extends Func ? ReturnType<F> : undefined;
32-
/**
33-
* 让一个函数的返回结果是缓存的
34-
* @param key 自定义缓存key生成器,如果生成的key不一样,那么缓存失效
35-
* @returns
36-
*/
37-
export const func_remember = <
32+
type KeyFun<F extends Func> = Func<ThisParameterType<F>, Parameters<F>>;
33+
export type FuncRemember<
3834
F extends Func,
39-
K extends Func<ThisParameterType<F>, Parameters<F>>,
40-
>(
41-
func: F,
42-
key?: K,
43-
): F & {
35+
K extends (KeyFun<F> | void) = void,
36+
> = F & {
4437
readonly source: F;
4538
readonly key: FunReturn<K> | undefined;
4639
readonly runned: boolean;
4740
readonly returnValue: ReturnType<F> | undefined;
4841
reset(): void;
4942
rerun(...args: Parameters<F>): ReturnType<F>;
50-
} => {
43+
};
44+
/**
45+
* 让一个函数的返回结果是缓存的
46+
* @param key 自定义缓存key生成器,如果生成的key不一样,那么缓存失效
47+
* @returns
48+
*/
49+
export const func_remember = <
50+
F extends Func,
51+
K extends Func<ThisParameterType<F>, Parameters<F>> | void | void,
52+
>(func: F, key?: K): FuncRemember<F, K> => {
5153
let result: {
5254
key: FunReturn<K>;
5355
res: ReturnType<F>;

0 commit comments

Comments
 (0)