Language-tools: El accesorio de la ranura no se encuentra en el elemento de la ranura.

Creado en 14 feb. 2021  ·  3Comentarios  ·  Fuente: sveltejs/language-tools

Describe el error
Las propiedades de la ranura solo se encuentran dentro del elemento de la ranura, pero no en el elemento en sí. Svelte permite usar la propiedad en el elemento, por lo que el error es simplemente un poco engañoso. Posiblemente solo surgió como error cuando se usa TypeScript con configuraciones suficientemente estrictas.

Reproducir
Cree un componente con propiedades de ranura y use la propiedad en el elemento que declara la propiedad (aquí el error en el uso de class ):

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

[REPL]

Comportamiento esperado
La propiedad de la ranura está dentro del alcance y no se genera ningún error.

Capturas de pantalla
image

Sistema (complete la siguiente información):

  • SO: Windows 10 de 64 bits
  • IDE: VSCode
  • Complemento / Paquete: Svelte para VSCode
Fixed bug

Todos 3 comentarios

Necesitamos subir la transformación jsx en el nivel, rodeando la etiqueta. Entonces, por ejemplo, en esta prueba debería convertirse

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

@dummdidumm Gracias por la corrección

Acabo de probar esto y si el let:prop es posterior a su uso, aún recibe una advertencia esbelta en lugar de un error de tipo:

'prop' no está definido [svelte (declaración faltante)]

Captura de pantalla de ejemplo:

image

Sin embargo, la salida generada funciona independientemente del orden. Por supuesto, puedo reordenar los atributos para deshacerme del error como solución.

Este es un error del compilador de Svelte, creé https://github.com/sveltejs/svelte/issues/6009 para eso.

¿Fue útil esta página
0 / 5 - 0 calificaciones