Vue Slots mit TypeScript typisieren: defineSlots<T>() für typsichere Scoped Slots
AI generated
{ }
Vue.js · defineSlots · TypeScript · Scoped Slots
Vue Slots typisieren
mit TypeScript: defineSlots() für typsichere Scoped Slots

Ein Scoped Slot transportiert Daten von der Kindkomponente zurück ins Template des Elternteils, doch ohne explizite Typisierung sieht TypeScript diese Daten lange Zeit nur als any. Ein Tippfehler wie item.näm statt item.name fällt dann erst im Browser auf, nicht schon beim Kompilieren. defineSlots() schließt genau diese Lücke: Jeder Slot bekommt einen echten TypeScript-Typ für seine Scoped-Slot-Props, inklusive vollständiger Autovervollständigung direkt im Template der einbindenden Komponente, ganz ohne zusätzliche Laufzeit-Validierung.

14 Min. Lesezeit defineSlots() · Scoped Slots Vue 3.3+ · TypeScript · Volar

1. Das Problem mit untypisierten Slots: eine lange Zeit bestehende Typlücke

Während Props über defineProps() schon lange vollständig typisierbar sind, blieben Scoped Slots lange Zeit die letzte große Lücke in der TypeScript-Abdeckung von Vue-Komponenten. Eine Komponente, die per Daten an den Elternteil weiterreicht, konnte diese Daten zwar zur Laufzeit korrekt übergeben, doch im Template der einbindenden Komponente wurden item und index innerhalb von