Saya harap seseorang boleh membantu saya atau menjelaskan jika apa yang saya cuba capai adalah mungkin. Saya sedang mencipta komponen dan saya menghadapi masalah dengan inferens jenis. Di bawah ialah kod.
import { faker } from "@faker-js/faker"; import * as React from "react"; type StringOrNumber = number | string; type Offset = { top?: StringOrNumber; left?: StringOrNumber; right?: StringOrNumber; bottom?: StringOrNumber; }; type Tab<T extends unknown[]> = { label: string; items: T; render: (item: T[number]) => JSX.Element | null; badgeCount?: StringOrNumber; }; type NotificationProps<T extends Tab<unknown[]>[]> = { tabs?: T; offset?: Offset; heading?: string; onMarkAllUsRead?(): void; }; export default function Notification<T extends Tab<unknown[]>[]>( props: NotificationProps<T>, ) { return <div>{props.heading}</div>; } // Example usage: <Notification offset={{ top: "50px", }} tabs={[ { label: "Users", items: new Array(5).fill(null).map(() => ({ name: faker.name.fullName(), email: faker.internet.email(), })), render: (user) => { return null; }, }, { label: "Emails", items: new Array(5).fill(null).map(() => ({ type: faker.random.word(), body: faker.lorem.paragraph(), })), render: (email) => { return null; }, }, ]} />;
Apa yang saya ingin capai ialah membuat render
中的参数推断出最接近的 items
的类型,但目前它的类型为 unknown
. Adakah terdapat cara untuk melakukan ini? Terima kasih terlebih dahulu
Saya tidak boleh mengulas kerana saya tidak mempunyai 50 reputasi, tetapi apa yang saya katakan ialah anda akan mendapat sebarang ralat tersirat kerana anda mengehadkan tatasusunan generik kepada tidak diketahui[], yang bermaksud itemnya boleh daripada apa-apa jenis . Jika anda melakukan sesuatu seperti ini:
Skrip taip akan mengetahui bahawa setiap item dalam tatasusunan T ialah nombor. Ini adalah contoh yang sangat mudah, tetapi hanya supaya anda boleh menunjukkan ralat anda.
Ini adalah penyelesaian一个> saya.