@@ -13,13 +13,22 @@ export type CacheMapper<
13
13
CachedT ,
14
14
F extends ExtendedMapper < any , any , [ CachedT ] >
15
15
> = (
16
+ /**
17
+ * This type,
18
+ * ```ts
19
+ * Extract<F, (name: string, mixed: any, ...args: any[]) => any>
20
+ * ```
21
+ *
22
+ * is necessary because of this bug,
23
+ * https://github.com/microsoft/TypeScript/pull/32924#issuecomment-521826091
24
+ */
16
25
& Mapper <
17
- HandledInputOf < F > ,
18
- OutputOf < F >
26
+ HandledInputOf < Extract < F , ( name : string , mixed : any , ... args : any [ ] ) => any > > ,
27
+ OutputOf < Extract < F , ( name : string , mixed : any , ... args : any [ ] ) => any > >
19
28
>
20
- & ExtractExpectedInputOrUnknown < F >
21
- & ExtractMappableInputOrUnknown < F >
22
- & ExtractRunTimeModifierOrUnknown < F >
29
+ & ExtractExpectedInputOrUnknown < Extract < F , ( name : string , mixed : any , ... args : any [ ] ) => any > >
30
+ & ExtractMappableInputOrUnknown < Extract < F , ( name : string , mixed : any , ... args : any [ ] ) => any > >
31
+ & ExtractRunTimeModifierOrUnknown < Extract < F , ( name : string , mixed : any , ... args : any [ ] ) => any > >
23
32
) ;
24
33
25
34
export function cache <
@@ -32,8 +41,8 @@ export function cache<
32
41
CacheMapper < CachedT , F >
33
42
) {
34
43
const result = copyRunTimeModifier (
35
- f ,
36
- ( name : string , mixed : HandledInputOf < F > ) : OutputOf < F > => {
44
+ f as Extract < F , ( name : string , mixed : any , ... args : any [ ] ) => any > ,
45
+ ( name : string , mixed : HandledInputOf < Extract < F , ( name : string , mixed : any , ... args : any [ ] ) => any > > ) : OutputOf < Extract < F , ( name : string , mixed : any , ... args : any [ ] ) => any > > => {
37
46
return f ( name , mixed , cached ) ;
38
47
}
39
48
)
0 commit comments