`InferProps` keeps `Promise` and `Response` for a `withValidator` loader
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 82/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- typescript
- Bereich
- backend-api-design
Rechercherichtung
Lies zuerst den Rückgabetyp von defineHandler.withValidator und wie InferProps __output liest. Füge einen Typentest für einen Loader hinzu, der { book } oder ein Response zurückgibt, und prüfe, dass InferProps<typeof loader> zu { book: Book } aufgelöst wird und nicht zu einer Union aus Promise oder Response.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
InferProps gives the props of a defineHandler loader, but not of a defineHandler.withValidator one:
export const loader = defineHandler.withValidator({
params: z.object({ id: z.string() }),
})(async (c, { params }) => {
const book = await findBook(params.id);
if (!book) return c.notFound();
return { book };
});
type Props = InferProps<typeof loader>;
// expected: { book: Book }
// actual: Promise<Response | { book: Book }>
defineHandler returns TypedHandler<{}, Exclude<Awaited<R>, Response>>, but withValidator returns TypedHandler<V, R> with the raw R. Routes don't notice, because the generated types wrap the output in Serialize<Awaited<…>>. InferProps reads __output directly, so it breaks.
Returning Exclude<Awaited<R>, Response> from withValidator too fixes it. Fix and a type test: https://github.com/ashunar0/void/commit/07c5352d58f880a0c77b78ce38aa5fb6fc832d5f
Happy to open a PR if that works for you.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 402
- Forks
- 32
- Ø Merge
- 12 Std. 28 Min.
- Gemergte PRs (30 T.)
- 77
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus voidzero-dev/void
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
voidzero-dev/void#463 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
voidzero-dev/void#459 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 78/100
voidzero-dev/void#428 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 68/100
voidzero-dev/void#480 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 56/100
voidzero-dev/void#477 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in voidzero-dev/void
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Koenkk/zigbee-herdsman-converters#13540 ·
Maintainer antworten meist innerhalb von 1 Tag
-
check:passed streams:add
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
iptv-org/iptv#55821 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
area/busola/ux
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
kyma-project/busola#5442 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
vercel-labs/wterm#246 ·
Maintainer antworten meist innerhalb von 1 Tag