Skip to content

Commit 27412f2

Browse files
authored
feat: GetResponseTypeFromEndpointMethod and GetResponseDataTypeFromEndpointMethod helpers (#32)
1 parent 01a5e67 commit 27412f2

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,24 @@
88

99
## Usage
1010

11+
Get response types from endpoint methods
12+
13+
```ts
14+
import {
15+
GetResponseTypeFromEndpointMethod,
16+
GetResponseDataTypeFromEndpointMethod,
17+
} from "@octokit/types";
18+
import { Octokit } from "@octokit/rest";
19+
20+
const octokit = new Octokit();
21+
type CreateLabelResponseType = GetResponseType<
22+
typeof octokit.issues.createLabel
23+
>;
24+
type CreateLabelResponseDataType = GetResponseDataType<
25+
typeof octokit.issues.createLabel
26+
>;
27+
```
28+
1129
See https://octokit.github.io/types.ts for all exported types
1230

1331
## Contributing
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
type Unwrap<T> = T extends Promise<infer U> ? U : T;
2+
type AnyFunction = (...args) => any;
3+
4+
export type GetResponseTypeFromEndpointMethod<T extends AnyFunction> = Unwrap<
5+
ReturnType<T>
6+
>;
7+
export type GetResponseDataTypeFromEndpointMethod<
8+
T extends AnyFunction
9+
> = Unwrap<ReturnType<T>>["data"];

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ export * from "./Signal";
1616
export * from "./StrategyInterface";
1717
export * from "./Url";
1818
export * from "./VERSION";
19+
export * from "./GetResponseTypeFromEndpointMethod";

0 commit comments

Comments
 (0)