この記事では、tRPC ソース コードにある arrayToDict 関数を分析します。
// https://github.com/trpc/trpc/pull/669 function arrayToDict(array: unknown[]) { const dict: Record<number, unknown> = {}; for (let index = 0; index < array.length; index++) { const element = array[index]; dict[index] = element; } return dict; }
この関数は簡単です。 dict は、for ループの上で初期化されるオブジェクトです。この for ループでは、要素に array[index] が代入されており、dict は配列のインデックスをキーとし、値をインデックスに基づく配列項目とするオブジェクトです。
この関数は単純ですが、このソリューションが KATT (tRPC の作成者) に提示される前に、PR: https://github.com/trpc/trpc/pull/669 で多くのことが議論されました。
このプル リクエストは、修正: zod .optional() 入力によるバッチ処理に関するものでした。
PR の説明:
- JSON.stringify([未定義]) === [null]
- これにより、null
ではなくオブジェクトまたは未定義が期待されるため、.optional() zod スキーマで問題が発生します。
- 生の入力が === null の場合にバリデーターを 2 回実行する醜いハックを修正しました。
- @simonedelmann のアイデアによって修正されました
意思決定がどのように行われるかについて洞察を得るために、このプル リクエストの会話に目を通すことをお勧めします。この会話は、アイデアがどのように飛び交うかを示し、また、それが単なるエッジケースであり、最終的に arrayToDict アイデアを採用することを選択した場合、アイデアに基づいて何が壊れる可能性があるかについても話します。
このプル リクエストには、
を提供する All Contributors Github アプリもあります。
アイデアに基づいて貢献者に帰属します。これが All Contributors の目的です。コードをプッシュした人だけでなく、すべての貢献者を認識します。すべての投稿者を使用すると、コードを書かずにアイデアを提示した場合でも、コメントを付けて投稿者にすることができます:
「
」
@all-contributors はレビュー用に @username を追加します
「
そして @all-contributors はタグ付けされたユーザーを投稿者として追加します。
Thinkthroo では、大規模なオープンソース プロジェクトを研究し、アーキテクチャ ガイドを提供しています。私たちは、tailwind を使用して構築された、プロジェクトで使用できる resubale コンポーネントを開発しました。 Next.js、React、Node 開発サービスを提供します。
プロジェクトについて話し合うためのミーティングを予約してください。
https://github.com/trpc/trpc/blob/next/packages/client/src/links/internals/httpUtils.ts#L57
https://github.com/trpc/trpc/pull/669
以上がtRPC ソース コードの arrayToDict 関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。