Language-tools: Schlitzstütze nicht am Schlitzelement selbst gefunden

Erstellt am 14. Feb. 2021  ·  3Kommentare  ·  Quelle: sveltejs/language-tools

Beschreibe den Fehler
Slot-Eigenschaften finden Sie nur innerhalb des Slot-Elements, nicht jedoch am Element selbst. Svelte erlaubt die Verwendung der Eigenschaft für das Element, daher ist der Fehler einfach etwas irreführend. Eventuell nur bei Verwendung von TypeScript mit ausreichend strengen Einstellungen als Fehler aufgetaucht.

Reproduzieren
Erstellen Sie eine Komponente mit Slot-Eigenschaften und verwenden Sie die Eigenschaft für das Element, das die Eigenschaft deklariert (hier der Fehler bei der Verwendung von class ):

<Component n={10}>
    <div slot="item" let:zebra class={zebra}>Hello {zebra}</div>
</Component>

[REPL]

Erwartetes Verhalten
Die Slot-Eigenschaft befindet sich im Gültigkeitsbereich und es wird kein Fehler ausgelöst.

Screenshots
image

System (bitte füllen Sie die folgenden Informationen aus):

  • Betriebssystem: Windows 10 64bit
  • IDE: VSCode
  • Plugin/Paket: Svelte für VSCode
Fixed bug

Alle 3 Kommentare

Wir müssen die jsx-Transformation auf der Ebene nach oben ziehen, die das Tag umgibt. So soll es zum Beispiel in diesem Test werden

<>{() => { let {thing:{ a }} = __sveltets_instanceOf(Component).$$slot_def['default'];<><Component>
    <h1>Hello { a }</h1>
</Component></>}}</>

@dummdidumm Danke für die Korrektur

Ich habe dies gerade getestet und wenn das let:prop nach seiner Verwendung ist, erhalten Sie immer noch eine schlanke Warnung anstelle eines Typfehlers:

'prop' ist nicht definiert [svelte(missing-declaration)]

Beispiel-Screenshot:

image

Die generierte Ausgabe funktioniert jedoch unabhängig von der Reihenfolge. Natürlich kann ich die Attribute einfach neu anordnen, um den Fehler als Workaround zu beheben.

Dies ist ein Svelte-Compiler-Fehler, dafür habe ich https://github.com/sveltejs/svelte/issues/6009 erstellt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen