Descreva o bug
As propriedades de slot são encontradas apenas no elemento de slot, mas não no próprio elemento. Svelte permite usar a propriedade no elemento, então o erro é simplesmente um pouco enganador. Possivelmente, apenas apareceu como erro ao usar o TypeScript com configurações suficientemente restritas.
Reproduzir
Crie um componente com propriedades de slot e use a propriedade no elemento que declara a propriedade (aqui o erro está no uso de class
):
<Component n={10}>
<div slot="item" let:zebra class={zebra}>Hello {zebra}</div>
</Component>
Comportamento esperado
A propriedade do slot está no escopo e nenhum erro é gerado.
Capturas de tela
Sistema (preencha as seguintes informações):
Precisamos puxar a transformação jsx no nível acima, em torno da tag. Então, por exemplo, neste teste , deve se tornar
<>{() => { let {thing:{ a }} = __sveltets_instanceOf(Component).$$slot_def['default'];<><Component>
<h1>Hello { a }</h1>
</Component></>}}</>
@dummdidumm Obrigado pela correção
Acabei de testar isso e se let:prop
estiver após seu uso, você ainda receberá um aviso esguio em vez de um erro de tipo:
'prop' não está definido [svelte (declaração em falta)]
Captura de tela de exemplo:
A saída gerada funciona independentemente da ordem, no entanto. Claro que posso simplesmente reordenar os atributos para me livrar do erro como uma solução alternativa.
Este é um bug do compilador Svelte, criei https://github.com/sveltejs/svelte/issues/6009 para isso.