mirror of
https://github.com/ArthurDanjou/trpc-nuxt.git
synced 2026-01-14 20:19:33 +01:00
81 lines
2.6 KiB
Markdown
81 lines
2.6 KiB
Markdown
## Inference Helpers
|
|
|
|
`@trpc/server` exports the following helper types to assist with inferring these types from the `router` exported in `~/server/trpc/index.ts`:
|
|
|
|
- `inferProcedureOutput<TProcedure>`
|
|
- `inferProcedureInput<TProcedure>`
|
|
- `inferSubscriptionOutput<TRouter, TPath>`
|
|
|
|
```ts
|
|
// ~/utils/trpc.ts
|
|
import type { router } from '~/server/trpc/index.ts'
|
|
|
|
type AppRouter = typeof router
|
|
|
|
/**
|
|
* 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]>
|
|
```
|