타입 추론
비공식 베타 번역
이 페이지는 PageTurner AI로 번역되었습니다(베타). 프로젝트 공식 승인을 받지 않았습니다. 오류를 발견하셨나요? 문제 신고 →
@trpc/client 또는 @trpc/react API의 기능을 다른 함수로 래핑하는 것은 종종 유용합니다. 이를 위해서는 @trpc/server 라우터에서 생성되는 입력 타입, 출력 타입 및 API 경로를 추론할 수 있어야 합니다.
추론 헬퍼
@trpc/server는 @trpc/server 라우터에서 내보낸 AppRouter로부터 이러한 타입을 추론하는 데 도움이 되는 다음 헬퍼 타입들을 제공합니다:
-
inferProcedureOutput<TProcedure> -
inferProcedureInput<TProcedure> -
inferSubscriptionOutput<TRouter, TPath>
예제 코드
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]>;