Inférer des types
Traduction Bêta Non Officielle
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Il est souvent utile d'encapsuler les fonctionnalités de votre API @trpc/client ou @trpc/react dans d'autres fonctions. Pour cela, il est nécessaire de pouvoir inférer les types d'entrée, les types de sortie et les chemins d'API générés par votre routeur @trpc/server.
Utilitaires d'inférence
@trpc/server expose les types utilitaires suivants pour vous aider à inférer ces types depuis l'AppRouter exporté par votre routeur @trpc/server :
-
inferProcedureOutput<TProcedure> -
inferProcedureInput<TProcedure> -
inferSubscriptionOutput<TRouter, TPath>
Exemple de code
utils/trpc.tstsx// trpc-helper.ts// Import AppRouter from your main server routerimport type {inferProcedureInput,inferProcedureOutput,inferSubscriptionOutput,} from '@trpc/server';import type { AppRouter } from 'api/src/routers/_app';/*** Enum containing all api query paths*/export type TQuery = keyof AppRouter['_def']['queries'];/*** Enum containing all api mutation paths*/export type TMutation = keyof AppRouter['_def']['mutations'];/*** Enum containing all api subscription paths*/export type TSubscription = keyof AppRouter['_def']['subscriptions'];/*** This is a helper method to infer the output of a query resolver* @example type HelloOutput = InferQueryOutput<'hello'>*/export type InferQueryOutput<TRouteKey extends TQuery> = inferProcedureOutput<AppRouter['_def']['queries'][TRouteKey]>;/*** This is a helper method to infer the input of a query resolver* @example type HelloInput = InferQueryInput<'hello'>*/export type InferQueryInput<TRouteKey extends TQuery> = inferProcedureInput<AppRouter['_def']['queries'][TRouteKey]>;/*** This is a helper method to infer the output of a mutation resolver* @example type HelloOutput = InferMutationOutput<'hello'>*/export type InferMutationOutput<TRouteKey extends TMutation> =inferProcedureOutput<AppRouter['_def']['mutations'][TRouteKey]>;/*** This is a helper method to infer the input of a mutation resolver* @example type HelloInput = InferMutationInput<'hello'>*/export type InferMutationInput<TRouteKey extends TMutation> =inferProcedureInput<AppRouter['_def']['mutations'][TRouteKey]>;/*** This is a helper method to infer the output of a subscription resolver* @example type HelloOutput = InferSubscriptionOutput<'hello'>*/export type InferSubscriptionOutput<TRouteKey extends TSubscription> =inferProcedureOutput<AppRouter['_def']['subscriptions'][TRouteKey]>;/*** This is a helper method to infer the asynchronous output of a subscription resolver* @example type HelloAsyncOutput = InferAsyncSubscriptionOutput<'hello'>*/export type InferAsyncSubscriptionOutput<TRouteKey extends TSubscription> =inferSubscriptionOutput<AppRouter, TRouteKey>;/*** This is a helper method to infer the input of a subscription resolver* @example type HelloInput = InferSubscriptionInput<'hello'>*/export type InferSubscriptionInput<TRouteKey extends TSubscription> =inferProcedureInput<AppRouter['_def']['subscriptions'][TRouteKey]>;
utils/trpc.tstsx// trpc-helper.ts// Import AppRouter from your main server routerimport type {inferProcedureInput,inferProcedureOutput,inferSubscriptionOutput,} from '@trpc/server';import type { AppRouter } from 'api/src/routers/_app';/*** Enum containing all api query paths*/export type TQuery = keyof AppRouter['_def']['queries'];/*** Enum containing all api mutation paths*/export type TMutation = keyof AppRouter['_def']['mutations'];/*** Enum containing all api subscription paths*/export type TSubscription = keyof AppRouter['_def']['subscriptions'];/*** This is a helper method to infer the output of a query resolver* @example type HelloOutput = InferQueryOutput<'hello'>*/export type InferQueryOutput<TRouteKey extends TQuery> = inferProcedureOutput<AppRouter['_def']['queries'][TRouteKey]>;/*** This is a helper method to infer the input of a query resolver* @example type HelloInput = InferQueryInput<'hello'>*/export type InferQueryInput<TRouteKey extends TQuery> = inferProcedureInput<AppRouter['_def']['queries'][TRouteKey]>;/*** This is a helper method to infer the output of a mutation resolver* @example type HelloOutput = InferMutationOutput<'hello'>*/export type InferMutationOutput<TRouteKey extends TMutation> =inferProcedureOutput<AppRouter['_def']['mutations'][TRouteKey]>;/*** This is a helper method to infer the input of a mutation resolver* @example type HelloInput = InferMutationInput<'hello'>*/export type InferMutationInput<TRouteKey extends TMutation> =inferProcedureInput<AppRouter['_def']['mutations'][TRouteKey]>;/*** This is a helper method to infer the output of a subscription resolver* @example type HelloOutput = InferSubscriptionOutput<'hello'>*/export type InferSubscriptionOutput<TRouteKey extends TSubscription> =inferProcedureOutput<AppRouter['_def']['subscriptions'][TRouteKey]>;/*** This is a helper method to infer the asynchronous output of a subscription resolver* @example type HelloAsyncOutput = InferAsyncSubscriptionOutput<'hello'>*/export type InferAsyncSubscriptionOutput<TRouteKey extends TSubscription> =inferSubscriptionOutput<AppRouter, TRouteKey>;/*** This is a helper method to infer the input of a subscription resolver* @example type HelloInput = InferSubscriptionInput<'hello'>*/export type InferSubscriptionInput<TRouteKey extends TSubscription> =inferProcedureInput<AppRouter['_def']['subscriptions'][TRouteKey]>;