As I studied an open-source codebase with intent to contribute, I used ChatGPT as a note-taking tool. This is my side of one of our conversations.
Break down this typescript function syntax:
// imports class "$gql" from barrelled $gql.ts
import * as graphql from "../lib/graphql";
export const useGql = <G extends graphql.Any$gql>(
gql: G
): [exec: Exec<G>, res: GqlRes<G>, cancel: xhr.Cancel, reset: xhr.Reset] => { ... }
so here, the vertical bars separate all possible types that GqlRes can be? Is this a union type?
export type GqlRes<G extends graphql.Any$gql> =
| {
status: GqlStatus.Init;
}
| {
status: GqlStatus.Pending;
}
| {
status: GqlStatus.Success;
data: graphql.SuccessfulResponse<G>["data"];
}
| {
status: GqlStatus.Errors;
errors: string[];
}
| {
status: GqlStatus.Cancelled;
};