Dalam artikel ini, kami menganalisis fungsi arrayToDict yang terdapat dalam kod sumber tRPC.
// 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; }
Fungsi ini lurus ke hadapan. dict ialah objek yang dimulakan di atas gelung for. Dalam gelung untuk ini, tatasusunan[indeks] diperuntukkan kepada elemen dan dict ialah objek yang indeks tatasusunan sebagai kunci dan nilai sebagai item tatasusunan berdasarkan indeks.
Walaupun fungsi ini mudah, banyak yang telah dibincangkan dalam PR: https://github.com/trpc/trpc/pull/669 sebelum penyelesaian ini dibentangkan kepada KATT (Pencipta tRPC).
Permintaan tarik ini adalah tentang — betulkan: sekumpulan dengan input zod .optional().
Huraian PR:
- JSON.stringify([undefined]) === [null]
- ini menyebabkan masalah dengan skema zod .optional() kerana ia menjangkakan objek atau tidak ditentukan, bukan batal
- diperbaiki oleh hack hodoh yang menjalankan validator dua kali apabila ia gagal jika input mentah === batal.
- ditetapkan oleh idea @simonedelmann
Saya akan mengesyorkan anda melalui perbualan permintaan tarik ini untuk memberi anda cerapan tentang cara keputusan dibuat. Perbualan ini menunjukkan cara idea dilantunkan dan juga bercakap tentang perkara yang boleh pecah berdasarkan idea, jika ia hanya huruf tepi dan akhirnya mereka memilih untuk menggunakan idea arrayToDict.
Dalam permintaan tarik ini, anda juga temui Aplikasi Github Semua Penyumbang yang memberikan
atribusi kepada penyumbang berdasarkan idea. Inilah yang dimaksudkan oleh Semua Penyumbang — Kenali semua penyumbang, bukan hanya mereka yang menolak kod. Dengan Semua Sumbangan, walaupun anda membentangkan idea tanpa menulis sebarang kod, anda boleh menjadikannya penyumbang dengan ulasan:
“
@semua-penyumbang tambahkan @nama pengguna untuk ulasan
“
dan @semua-penyumbang menambah pengguna yang ditandai sebagai penyumbang.
Di Thinkthroo, kami mengkaji projek sumber terbuka yang besar dan menyediakan panduan seni bina. Kami telah membangunkan Komponen resubale, dibina dengan tailwind, yang boleh anda gunakan dalam projek anda. Kami menawarkan perkhidmatan pembangunan Next.js, React dan Node.
Tempah mesyuarat dengan kami untuk membincangkan projek anda.
https://github.com/trpc/trpc/blob/next/packages/client/src/links/internals/httpUtils.ts#L57
https://github.com/trpc/trpc/pull/669
Atas ialah kandungan terperinci arrayToDict fungsi dalam kod sumber tRPC. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!