Skip to content

Commit 3f827ae

Browse files
Add MethodResponse utility type
1 parent 7e83e64 commit 3f827ae

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

packages/openapi-fetch/src/index.d.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,20 @@ export interface Client<Paths extends {}, Media extends MediaType = MediaType> {
190190
eject(...middleware: Middleware[]): void;
191191
}
192192

193+
export type ClientPathsWithMethod<
194+
CreatedClient extends Client<any, any>,
195+
Method extends HttpMethod,
196+
> = CreatedClient extends Client<infer Paths, infer _Media> ? PathsWithMethod<Paths, Method> : never;
197+
198+
export type MethodResponse<
199+
CreatedClient extends Client<any, any>,
200+
Method extends HttpMethod,
201+
Path extends ClientPathsWithMethod<CreatedClient, Method>,
202+
Options = {},
203+
> = CreatedClient extends Client<infer Paths extends { [key: string]: any }, infer Media extends MediaType>
204+
? NonNullable<FetchResponse<Paths[Path][Method], Options, Media>["data"]>
205+
: never;
206+
193207
export default function createClient<Paths extends {}, Media extends MediaType = MediaType>(
194208
clientOptions?: ClientOptions,
195209
): Client<Paths, Media>;

0 commit comments

Comments
 (0)