バグを説明する
スロットプロパティはスロット要素内にのみあり、要素自体にはありません。 Svelteでは要素のプロパティを使用できるため、エラーは少し誤解を招く可能性があります。 おそらく、十分に厳密な設定でTypeScriptを使用した場合にのみ、エラーとして表示されます。
再現するには
スロットプロパティを使用してコンポーネントを作成し、プロパティを宣言する要素のプロパティを使用します(ここではclass
使用法に関するエラー):
<Component n={10}>
<div slot="item" let:zebra class={zebra}>Hello {zebra}</div>
</Component>
予想される行動
スロットプロパティはスコープ内にあり、エラーは発生しません。
スクリーンショット
システム(以下の情報を入力してください):
タグを囲んで、レベルアップでjsx-transformationをプルする必要があります。 したがって、たとえばこのテストでは、次のようになります。
<>{() => { let {thing:{ a }} = __sveltets_instanceOf(Component).$$slot_def['default'];<><Component>
<h1>Hello { a }</h1>
</Component></>}}</>
@dummdidumm修正ありがとうございます
これをテストしたところ、 let:prop
が使用された後でも、タイプエラーではなくsvelte警告が表示されます。
'prop'が定義されていません[svelte(missing-declaration)]
スクリーンショットの例:
ただし、生成された出力は順序に関係なく機能します。 もちろん、回避策として、属性を並べ替えてエラーを取り除くこともできます。
これはSvelteコンパイラのバグです。そのためにhttps://github.com/sveltejs/svelte/issues/6009を作成しました。