Skip to content

Commit d55857e

Browse files
authored
🤖 Merge PR DefinitelyTyped#72188 [memoizee]: Fix the return type of delete() & clear() to void by @thgreasi
1 parent 26cb38a commit d55857e

File tree

2 files changed

+40
-12
lines changed

2 files changed

+40
-12
lines changed

‎types/memoizee/index.d.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ declare namespace memoizee {
1313
profileName?: string;
1414
}
1515

16-
interface Memoized<F> {
17-
delete: F;
18-
clear: F & (() => void);
16+
interface Memoized<F extends (...args: any[]) => any> {
17+
delete: (...args: Parameters<F>) => void;
18+
clear: () => void;
1919
}
2020
}
2121

‎types/memoizee/memoizee-tests.ts‎

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import memoize = require("memoizee");
22

3-
const fn = (one: string, two?: number, three?: any) => {/* ... */};
3+
const fn = (one: string, two?: number, three?: any) => {
4+
return "test";
5+
};
46

57
let memoized = memoize(fn);
68
memoized("foo", 3, "bar");
@@ -19,11 +21,30 @@ memoized = memoize(fn, { primitive: true });
1921
memoized("/path/one");
2022
memoized("/path/one");
2123
memoized = memoize(fn, { dispose(value: number) {/*…*/} });
22-
const foo3 = memoized("foo", 3);
23-
const bar7 = memoized("bar", 7);
24-
memoized.clear("foo", 3); // Dispose called with foo3 value
25-
memoized.clear("bar", 7); // Dispose called with bar7 value
26-
memoized.delete("foo", 0);
24+
const foo3: string = memoized("foo", 3);
25+
const bar7: string = memoized("bar", 7);
26+
memoized.delete("foo", 3); // Dispose called with foo3 value
27+
memoized.delete("bar", 7); // Dispose called with bar7 value
28+
memoized.clear();
29+
30+
function testIncorrectParameterType(): string {
31+
// @ts-expect-error Expect TypeScript to error when passing parameters of wrong types.
32+
return memoized(3, "foo");
33+
}
34+
function testIncorrectDeleteParameterType(): void {
35+
// @ts-expect-error Expect TypeScript to error when passing parameters of wrong types.
36+
return memoized.delete(3, "foo");
37+
}
38+
function testIncorrectClearParameterType(): void {
39+
// @ts-expect-error Expect TypeScript since clear() does not take any parameters.
40+
return memoized.clear("foo", 3);
41+
}
42+
function testDeleteReturnType(a: string, b: number): void {
43+
return memoized.delete(a, b);
44+
}
45+
function testClearReturnType(): void {
46+
return memoized.clear();
47+
}
2748
const mFn = memoize((hash: any) => {
2849
// body of memoized function
2950
}, {
@@ -49,13 +70,20 @@ memoized(
4970

5071
{
5172
const afn = (a: number, b: number) => {
52-
return new Promise(res => {
73+
return new Promise<number>(res => {
5374
res(a + b);
5475
});
5576
};
5677
let memoized = memoize(afn, { promise: true });
57-
memoized(3, 7);
58-
memoized(3, 7);
78+
const foo: Promise<number> = memoized(3, 7);
79+
const bar: Promise<number> = memoized(3, 7);
80+
81+
function testDeleteReturnType(a: number, b: number): void {
82+
return memoized.delete(a, b);
83+
}
84+
function testClearReturnType(): void {
85+
return memoized.clear();
86+
}
5987

6088
memoized = memoize(afn, { promise: "then" });
6189
memoized(2, 7);

0 commit comments

Comments
 (0)