ホームページ > 記事 > ウェブフロントエンド > tRPC ソース コードの httpBatchLink タイプの説明
この記事では、tRPC ソース コードにある httpBatchLink タイプを分析します。しかし、まず知っていただきたいのは
httpBatchLink とは何ですか。
以下は、tRPC バニラ設定ガイドから抜粋した例です。
import { createTRPCClient, httpBatchLink } from '@trpc/client'; import type { AppRouter } from '../path/to/server/trpc'; const client = createTRPCClient<AppRouter>({ links: [ httpBatchLink({ url: 'http://localhost:3000/trpc', // You can pass any HTTP headers you wish here async headers() { return { authorization: getAuthCookie(), }; }, }), ], });
httpBatchLink は tRPC の構成に使用されます。その種類に興味があったので、ソースコードを見始めました。 package/client/src/links/httpBatchLinks.ts には httpBatchLink.ts という名前のファイルがあり、この記事の執筆時点では約 137 行のコードがあります。
export function httpBatchLink<TRouter extends AnyRouter>( opts: HTTPBatchLinkOptions<TRouter['_def']['_config']['$types']>, ): TRPCLink<TRouter> {
opts のタイプは HTTPBatchLinkOptions
の型定義を見てみましょう。
- HTTPBatchLinkOptions
- トラウター
packages/client/src/links/HTTPBatchLinkOptions.ts で定義されている HTTPBatchLinkOptions タイプが見つかります
export type HTTPBatchLinkOptions<TRoot extends AnyClientTypes> = HTTPLinkBaseOptions<TRoot> & { maxURLLength?: number; /** * Headers to be set on outgoing requests or a callback that of said headers * @see http://trpc.io/docs/client/headers */ headers?: | HTTPHeaders | ((opts: { opList: NonEmptyArray<Operation>; }) => HTTPHeaders | Promise<HTTPHeaders>); };
AnyClientTypes
export type AnyClientTypes = Pick<AnyRootTypes, 'errorShape' | 'transformer'>;
ここでのピックとは何ですか? TS ドキュメントで Pick を検索したところ、次のものが見つかりました:
Type.
例:
interface Todo { title: string; description: string; completed: boolean; } type TodoPreview = Pick<Todo, "title" | "completed">; const todo: TodoPreview = { title: "Clean room", completed: false, };
AnyRootTypes
export type AnyRootTypes = CreateRootTypes<{ ctx: any; meta: any; errorShape: any; transformer: any; }>;
混乱する可能性がありますが、ここで重要なルールは、型はファイル内で定義され、これらの型を使用する関数と同じ場所に配置されるだけでなく、必要に応じてコードベース全体で使用できるようにこれらの型をエクスポートすることです。
ここでの最良の例は、httpUtils.ts で定義された HTTPLinkBaseOptions が同じファイルで使用され、packages/client/src/links/HTTPBatchLinkOptions.ts でも使用されることです
次のような場合があります:
packages/client/src/links/HTTPBatchLinkOptions.ts
packages/server/src/unstable-core-do-not-import/clientish/inferrable.ts
これらのファイルでは型のみが定義されており、ここには他の関数はありません。
Thinkthroo では、大規模なオープンソース プロジェクトを研究し、アーキテクチャ ガイドを提供しています。私たちは、tailwind を使用して構築された、プロジェクトで使用できる resubale コンポーネントを開発しました。 Next.js、React、Node 開発サービスを提供します。
プロジェクトについて話し合うためのミーティングを予約してください。
https://trpc.io/docs/client/vanilla/setup
https://github.com/trpc/trpc/blob/next/packages/client/src/links/httpBatchLink.ts#L22
https://github.com/trpc/trpc/blob/next/packages/client/src/links/HTTPBatchLinkOptions.ts#L6
https://github.com/trpc/trpc/blob/next/packages/client/src/links/internals/httpUtils.ts#L22
以上がtRPC ソース コードの httpBatchLink タイプの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。