在本文中,我們分析了 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]被分配給element,dict是一個對象,數組索引作為鍵,值是基於索引的數組項。
雖然這個函數很簡單,但在將此解決方案提交給 KATT(tRPC 的創建者)之前,PR 中討論了很多內容:https://github.com/trpc/trpc/pull/669。
此拉取請求是關於 — 修復:使用 zod .optical() 輸入進行批次處理。
公關描述:
- JSON.stringify([未定義]) === [null]
- 這會導致 .optional() zod 架構出現問題,因為它需要一個對像或未定義的對象,而不是 null
- 由醜陋的駭客修復,如果原始輸入 === null,則驗證器失敗時運行驗證器兩次。
- 由 @simonedelmann 的想法修復
我建議您仔細閱讀此拉取請求對話,以便您深入了解如何制定決策。這段對話展示了想法是如何反彈的,也討論瞭如果這只是一個邊緣情況,那麼基於一個想法可能會破壞什麼,並且他們最終選擇使用 arrayToDict 想法。
在此拉取請求中,您還可以找到所有貢獻者 Github 應用程序,它提供
基於想法的貢獻者歸屬。這就是「所有貢獻者」的意義所在——認可所有貢獻者,而不僅僅是那些推送程式碼的人。透過 All Contributes,即使您在不編寫任何程式碼的情況下提出想法,您也可以透過評論讓他們成為貢獻者:
「
@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中文網其他相關文章!