Skip to content

Commit 2344f28

Browse files
committed
feat: add SyncFn and SyncFnWithThis to type utilities
1 parent 7a3136f commit 2344f28

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

src/types/fn.d.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,14 @@ export type AsyncFnWithThis<Return = any, Args extends readonly any[] = any[], T
1717
) => Promise<Return>) & {
1818
prototype: This;
1919
};
20+
21+
export type SyncFn<Return = any, Args extends readonly any[] = any[]> = (
22+
...args: Args
23+
) => Return extends Promise<any> ? never : Return;
24+
25+
export type SyncFnWithThis<Return = any, Args extends readonly any[] = any[], This = unknown> = ((
26+
this: This,
27+
...args: Args
28+
) => Return extends Promise<any> ? never : Return) & {
29+
prototype: This;
30+
};

src/types/global-types.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ declare global {
6363
Args extends readonly any[] = any[],
6464
This = unknown,
6565
> = Types.FnWithThis<Return, Args, This>;
66+
type SyncFn<Return = any, Args extends readonly any[] = any[]> = Types.SyncFn<Return, Args>;
67+
type SyncFnWithThis<
68+
Return = any,
69+
Args extends readonly any[] = any[],
70+
This = unknown,
71+
> = Types.SyncFnWithThis<Return, Args, This>;
6672

6773
type Entries<BaseType> = Types.Entries<BaseType>;
6874
type Entry<BaseType> = Types.Entry<BaseType>;

src/types/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export type { AsyncFn, AsyncFnWithThis, Fn, FnWithThis } from "./fn";
1+
export type { AsyncFn, AsyncFnWithThis, Fn, FnWithThis, SyncFn, SyncFnWithThis } from "./fn";
22
export type { Nullable } from "./nullable";
33
export type { OmitByKey } from "./omit-by-key";
44
export type { YieldType } from "./yield-type";

0 commit comments

Comments
 (0)