UNPKG

groupby-typename

Version:

Type-safe and tested utility to easily group an array of GraphQL objects by their typename

18 lines 612 B
//#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 };