UNPKG

@reduxjs/toolkit

Version:

The official, opinionated, batteries-included toolset for efficient Redux development

34 lines (32 loc) 1.26 kB
import type { UseMutation, UseLazyQuery, UseQuery } from '../buildHooks' import type { DefinitionType, EndpointDefinitions, MutationDefinition, QueryDefinition, } from '@reduxjs/toolkit/dist/query/endpointDefinitions' // For TS 4.1 and later, we can use string literal types to define // the exact names of each endpoint's exported hooks export type HooksWithUniqueNames<Definitions extends EndpointDefinitions> = keyof Definitions extends infer Keys ? Keys extends string ? Definitions[Keys] extends { type: DefinitionType.query } ? { [K in Keys as `use${Capitalize<K>}Query`]: UseQuery< Extract<Definitions[K], QueryDefinition<any, any, any, any>> > } & { [K in Keys as `useLazy${Capitalize<K>}Query`]: UseLazyQuery< Extract<Definitions[K], QueryDefinition<any, any, any, any>> > } : Definitions[Keys] extends { type: DefinitionType.mutation } ? { [K in Keys as `use${Capitalize<K>}Mutation`]: UseMutation< Extract<Definitions[K], MutationDefinition<any, any, any, any>> > } : never : never : never