groupby-typename
Version:
Type-safe and tested utility to easily group an array of GraphQL objects by their typename
18 lines • 612 B
TypeScript
//#region src/types.d.ts
/**
* Represents a GraphQL object with minimally a `__typename` property.
*/
type GraphQLObject = {
__typename: string;
[key: PropertyKey]: unknown;
};
/**
* Defines a type representing a grouping of GraphQL objects based on their `__typename` property.
*
* Basically a type representing of a group by operation on an array of GraphQL objects.
*/
type GroupedGraphQLObjects<Objects extends readonly GraphQLObject[]> = { [K in Objects[number]['__typename']]?: Extract<Objects[number], {
__typename: K;
}>[] } & {};
//#endregion
export { GraphQLObject, GroupedGraphQLObjects };